私は春のInitilizrを使って春のブートアプリケーションを作成しました。私はその後、付属Apache's Freemarker
私のプロジェクトからテンプレートをロードするためのテンプレートエンジンを。:デフォルトの負荷によるエンジンからテンプレートsrc/main/resources/templates/
フォルダ。
私は、単純なロードしようとしていindex.ftl
たときに、ユーザーが訪問ウェブページのテンプレートとしてファイルをhttp://localhost:8080
。しかし、私はからテンプレートをロードする必要がありますsrc/main/webapp/
フォルダ。私は外からテンプレートをロードしようとするたびにresources
、フォルダ、テンプレートエンジンは、テンプレートを見つけることができません。
私は、さまざまなチュートリアルやスタックオーバーフローの質問を通じて行っています。どれも私の質問に答えていないし、私はとこだわっている404 ERROR
エンジンは、ファイルを見つけることができないためです。
ファイル構造は次のとおりです。
|-src
|---main
|-----java
|-------MainApplication.java
|-------controllers
|---------ViewController.java
|-----resources
|-------static
|-------templates
|-------application.properties
|-----webapp
|-------index.ftl
掘りの多くの後、私は彼らがテンプレートエンジンは、ファイルを検索する場所を変更することを示唆し、ポストに出くわしました。これは、application.propertiesに以下の行を追加提案しました:
spring.freemarker.enabled=true
spring.freemarker.template-loader-path=classpath:src/main/webapp/
これは、すべてで動作するようには思えません。
私は私がウェブページにアクセスすると、単純なインデックスページを解決しようとしています。http:// localhostを:8080。私は、中にHTTPリクエストをマッピングするため、次のコードを書いていますViewController.java
:
@RequestMapping("/")
public ModelAndView home(Model model)
{
return new ModelAndView("index");
}
私は完全にそれが間違って取得していますか私はいくつかの設定を見逃してしまった場合は考えていません。
春のドキュメントから:
アプリケーションがjarファイルとしてパッケージ化されている場合はsrc /メイン/ webappディレクトリを使用しないでください。このディレクトリは、共通の標準ですが、それは戦争のパッケージでのみ動作し、あなたが戦争を生成するとき、それは静かに、ほとんどのビルドツールによって無視されます。
src/main/webapp
Webアーカイブに関連付けられている、あなたは戦争を生成する際にMavenの戦争のプラグインでパッケージ化されます。
あなたはFTLテンプレートを維持するために別の場所を必要とし、あなたはまだjarファイルとしてパッケージしたいとあなたは下記の手順可能性がありますと仮定。
リソースプラグインがクラスパスにそのディレクトリをコピーすることができるようにポンポンファイルにビルド内のリソースエントリを追加します。
<build>
<resources>
<resource>
<directory>src/main/webapp</directory>
</resource>
<resources>
<build>
クラスパスのルートから読み取るために、ローダ・パスを変更します。
spring.freemarker.template-loader-path=classpath:
その唯一のFTLテンプレートの場合は私がするディレクトリを変更しますsrc/main/ftls
混乱を避けるため、資源に同じを更新します。
更新
私は実際にはWARの展開パッケージを構築したいです
あなたは、ビルド戦争に戦争のプラグインを使用する必要があります。プラグインを追加し、POMで戦争にパッケージを変更します。