百里香叶无法检测 Spring-boot 项目中的模板

2022-09-04 01:42:28

我在Spring引导应用程序中具有以下项目结构,其中我想使用Thymeleaf

projectName
    -Gradle-Module1(Spring boot module)
        -build
        -src
            -main
            -resources
                -templates
                    index.html
        build.gradle
    -Gradle-Module2
        ...
    build.gradle
    ...

但是弹簧启动找不到我的模板目录并显示警告

找不到模板位置:classpath:/templates/ (请添加一些模板或检查您的百里香叶配置)

PS:我正在使用@EnableAutoConfiguration

在我的控制器代码中,我正在做这样的事情:

@Controller
@EnableAutoConfiguration
public class BaseController {

    @RequestMapping(value = "/")
    public String index() {
        return "index.html";
    }
}

和文件只是打印你好世界。index.html

因此,通常它应该查看内部(我想是相同的Gradle模块),但不知何故,它无法找到它。src/resources/templates/

当我尝试访问时,我得到以下错误localhost:8080

解析模板“index.html”时出错,模板可能不存在或无法由任何已配置的模板解析程序访问

我错过了什么吗?
任何指点赞赏。谢谢。


答案 1

您必须按如下方式配置 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文档建议为您的小学课程添加注释。@EnableAutoConfiguration@Configuration

此外,似乎您有错误的项目结构,典型的包层次结构是:

src
  |- main
      |- java
      |- resources
          |- static
          |- templates
  |- test

在这种情况下,您的模板将位于 中,而不是 位于 中。src/main/resources/templatessrc/resources/templates/


答案 2

您只应返回文件名。例如,如果没有 .hmtl

@RequestMapping(value = "/")
   public String index() {
   return "index";
}

推荐