java 如何从Sping Boot 中找到Thymeleaf模板

3yhwsihp  于 2023-03-21  发布在  Java
关注(0)|答案(7)|浏览(143)

我试图按照http://www.thymeleaf.org/doc/articles/springmvcaccessdata.html的教程学习如何发送响应到Thymeleaf模板。但我得到这个错误:找不到模板位置:classpath:/templates/(请添加一些模板或检查您的Thymeleaf配置)
我将message.html文件放在Other Sources目录和<default package>下的src/main/resources中。
因此,结构如下所示:
某个项目-其他来源-源代码/主/资源---<default package>----消息. 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>
qcbq4gxm

qcbq4gxm1#

Sping Boot 包括对thymeleaf模板引擎的自动配置支持,您的模板将从src/main/resources/templates自动获取。
如果您正在自定义模板位置,请使用Sping Boot 中提供以下thymeleaf属性配置。

spring.thymeleaf.check-template=true # Check that the template exists before rendering it.

 spring.thymeleaf.check-template-location=true # Check that the templates location exists.

 spring.thymeleaf.enabled=true # Enable MVC Thymeleaf view resolution.

 spring.thymeleaf.prefix=classpath:/templates/ # Prefix that gets prepended to view names when building a URL.

 spring.thymeleaf.suffix=.html # Suffix that gets appended to view names when building a URL.
ddrv8njm

ddrv8njm2#

thymeleaf模板的默认目录位置为:

src/main/resources/templates

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

eh57zj3b

eh57zj3b3#

这里有两件事:1.如果你使用的是Maven,并且我假设没有自定义文件夹名称。那么文件夹名称应该是src而不是source。2.一旦文件夹被重命名,将你的模板移动到src/resources内的'templates'文件夹中,这应该可以正常运行。

6qqygrtg

6qqygrtg4#

对于Thymeleaf模板文件放在文件夹src/main/resources/templates/,它将为您工作,也请查看http://www.mkyong.com/spring-boot/spring-boot-hello-world-example-thymeleaf/。希望您会发现使用Sping Boot 轻松启动Thymeleaf。

6bc51xsx

6bc51xsx5#

我在Sping Boot + Gradle中遇到了同样的问题,以下是我解决它的步骤:
1.打印出类路径

1.一旦我确定resources文件夹没有包含在类路径中,我就从磁盘重新加载应用程序:

  1. Gradle清理项目
d5vmydt9

d5vmydt96#

我看到了很多关于ThymeLeaf /templates not found的问题。对于使用Eclipse或STS的每个人来说,解决方案可能比任何类型的配置更简单。在使用maven的项目操作过程中,即编译,清理,构建和其他,最终部署Eclipse工作区(或暂存区)上的输出目录

[eclipseprojectrootfolder]/target/

可以擦除某些输出目录结构,而不能正确地重新创建它们。
在我的例子中,我在www.example.com上寻找各种解决方案application.properties,在Spring应用程序上更改autoconfig都无济于事。解决方案很简单:看看里面

[eclipseprojectrootfolder]/target/classes

看看你能不能在那个目录里找到

[eclipseprojectrootfolder]/target/classes/templates/

以及

[eclipseprojectrootfolder]/target/classes/static/

下面是resources目录中的文件夹:

[eclipseprojectrootfolder]/src/main/resources

复制[eclipseprojectroot文件夹]/src/main/resources中的文件夹,即

/templates 
/static

into [eclipseprojectrootfolder]/target/classes这就是解决方案。Spring正在抱怨正是因为..找不到/templates...因为输出部署文件夹/目录上的目录可能确实不存在...只需手动重新创建目录,一切都会好起来。重要说明,当然,当我提到手动复制目录可能是必要的,这意味着我们需要重新创建目录和里面的文件是模板和静态的百里香叶含量。

fquxozlt

fquxozlt7#

通过右键单击您的项目创建新文件夹-将其命名为templates -将所有旧模板文件复制到这个新文件夹。

相关问题