如何从春季启动中找到Thymeleaf模板

时间:2016-12-25 01:03:57

标签: java spring maven spring-boot thymeleaf

我正在尝试在http://www.thymeleaf.org/doc/articles/springmvcaccessdata.html上关注本教程,以了解如何向Thymeleaf模板发送回复。但我得到这个错误:找不到模板位置:classpath:/ templates /(请添加一些模板或检查你的Thymeleaf配置)

我将message.html文件放在Other Sources目录中,并放在<default package>下的src / main / resources中。

所以结构如下:

SomeProject - 其他来源 --src /主/资源 --- <default package> ---- message.html

我想知道为什么它显示在<default package>下但不在<template>下?可能是问题吗?如果是这样我怎么能改变它?我正在使用netbeans和maven。有什么想法吗?这些是我在pom.xml中的依赖项:

    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-thymeleaf</artifactId>
    </dependency>
     <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-devtools</artifactId>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-test</artifactId>
    </dependency>            
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-data-jpa</artifactId>
    </dependency>
    <dependency>
        <groupId>com.h2database</groupId>
        <artifactId>h2</artifactId>
    </dependency>

在控制器中我有

@RequestMapping(value = "message", method = RequestMethod.GET)
    public String messages(Model model) {
    model.addAttribute("messages", messageRepository.findAll());
    return "message";
}

在视图中:

<ul th:each="message : ${messages}">
    <li th:text="${message.id}">1</li>
    <li><a href="#" th:text="${message.title}">Title ...</a></li>
    <li th:text="${message.text}">Text ...</li>
</ul>   

5 个答案:

答案 0 :(得分:8)

Spring Boot包含对百万美元模板引擎的自动配置支持,您的模板将自动从src / main / resources / templates中获取。

如果您自定义模板位置,请使用Spring Boot中提供的百万美元属性配置。

  • spring.thymeleaf.check-template = true#在渲染之前检查模板是否存在。

  • spring.thymeleaf.check-template-location = true#检查模板位置是否存在。

  • spring.thymeleaf.enabled = true#启用MVC Thymeleaf视图解析。

  • spring.thymeleaf.prefix = classpath:/ templates /#在构建URL时前缀为视图名称的前缀。

  • spring.thymeleaf.suffix = .html#在构建网址时附加到视图名称的后缀。

答案 1 :(得分:1)

百万美元模板的默认目录位置是:

src/main/resources/templates

其他路径是Spring Boot的标准约定。

Spring Boot thymeleaf directory structure

答案 2 :(得分:1)

对于放在文件夹src / main / resources / templates /中的Thymeleaf模板文件,它也适用于您,也可以查看http://www.mkyong.com/spring-boot/spring-boot-hello-world-example-thymeleaf/。希望你会发现用弹簧靴启动百里香很容易。

答案 3 :(得分:0)

这里有两件事: 1.如果您使用的是Maven,我假设没有对文件夹名称进行自定义。然后文件夹名称应该是src而不是source。 2.重命名文件夹后,将模板移到&#39;模板中。在src / resources里面的文件夹应该运行正常。

答案 4 :(得分:0)

我在使用Spring Boot + Gradle时遇到了同样的问题,这些是我要解决的步骤:

  1. 打印出类路径 Classpath Print out

  2. 一旦确定资源文件夹未包含在类路径中,便从磁盘重新加载了应用程序:

Gradle Reload

  1. 彻底清理项目 Gradle clean task