web-dev-qa-db-ja.com

ThymeleafがSpring-Bootプロジェクト内のテンプレートを検出できない

私のスプリングブートアプリには、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が発生します。不足しているものはありますか?

どんなポインタでも大歓迎です。

ありがとう。

7
Vihar

以下のように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/

8
DimaSan

ファイル名のみを返す必要があります。 .htmlなしの卵

@RequestMapping(value = "/")
   public String index() {
   return "index";
}
6
kkflf
@GetMapping("/")
public String index() {
    return "index";
}
2
Ashraful041