私のスプリングブートアプリには、Thymeleafを使用したい次のプロジェクト構造があります。
projectName
-Gradle-Module1(Spring boot module)
-build
-src
-main
-resources
-templates
index.html
build.gradle
-Gradle-Module2
...
build.gradle
...
しかし、スプリングブートは私のテンプレートディレクトリを見つけることができず、警告が表示されています
Cannot find template location: classpath:/templates/ (please add some templates or check your Thymeleaf configuration)
PS:@EnableAutoConfiguration
を使用しています
私のコントローラーコードでは私は次のようなことをしています
@Controller
@EnableAutoConfiguration
public class BaseController {
@RequestMapping(value = "/")
public String index() {
return "index.html";
}
}
index.html
ファイルはhello worldを出力するだけです。
そのため、通常はsrc/resources/templates/
(おそらく同じGradleモジュール)の内部を調べる必要がありますが、どういうわけかそれを見つけることができません。
localhost:8080
にアクセスしようとすると、エラーError resolving template "index.html", template might not exist or might not be accessible by any of the configured Template Resolvers
が発生します。不足しているものはありますか?
どんなポインタでも大歓迎です。
ありがとう。
以下のようにThymeleafを構成する必要があります。
@Configuration
public class ThymeleafConfig {
@Bean
public SpringResourceTemplateResolver templateResolver() {
SpringResourceTemplateResolver templateResolver = new SpringResourceTemplateResolver();
templateResolver.setCacheable(false);
templateResolver.setPrefix("classpath:/templates/");
templateResolver.setSuffix(".html");
return templateResolver;
}
@Bean
public SpringTemplateEngine templateEngine() {
SpringTemplateEngine springTemplateEngine = new SpringTemplateEngine();
springTemplateEngine.addTemplateResolver(templateResolver());
return springTemplateEngine;
}
@Bean
public ThymeleafViewResolver viewResolver() {
ThymeleafViewResolver viewResolver = new ThymeleafViewResolver();
viewResolver.setTemplateEngine(templateEngine());
viewResolver.setOrder(1);
return viewResolver;
}
}
Spring docが推奨 追加@EnableAutoConfiguration
プライマリへの注釈@Configuration
クラス。
また、プロジェクト構造が間違っているようです。一般的なパッケージ階層は次のとおりです。
src
|- main
|- Java
|- resources
|- static
|- templates
|- test
この場合、テンプレートはsrc/main/resources/templates
、 ありませんで src/resources/templates/
。
ファイル名のみを返す必要があります。 .htmlなしの卵
@RequestMapping(value = "/")
public String index() {
return "index";
}
@GetMapping("/")
public String index() {
return "index";
}