Thymeleaf无法检测spring-boot项目中的模板

时间:2017-03-22 09:28:54

标签: java spring spring-boot thymeleaf

我的Spring启动应用程序中有以下项目结构,我想使用Thymeleaf

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

但是spring-boot找不到我的模板目录并显示警告

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 有什么我想念的吗?

任何指示赞赏。

感谢。

3 个答案:

答案 0 :(得分:6)

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

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

答案 1 :(得分:5)

您必须按如下方式配置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 recommends@EnableAutoConfiguration注释添加到您的主要@Configuration课程。

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

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

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

答案 2 :(得分:2)

@GetMapping("/")
public String index() {
    return "index";
}