关于 springboot 集成freemarker和thymeleaf 注意事项
本地启动正常 服务器部署后访问500问题
在 Spring Boot 中使用模板引擎时,可以配置模板文件的路径。一般来说,classpath:/templates 和 classpath:/templates/ 都是常见的配置方式,它们的区别如下:
这里有一个页面 resources/templates/index.html(resources/templates/index.ftl)
classpath:/templates:这个路径配置指定了模板文件所在的根目录,这个根目录下的所有子目录中的模板文件都可以被解析和使用。如果没有指定具体的子目录,则默认使用根目录下的所有模板文件。
在java代码里返回的页面位置 return “/index”
classpath:/templates/:这个路径配置与 classpath:/templates 功能相同,唯一的区别是在路径后面多加了一个斜杠。这个斜杠的作用是指定了一个空的子目录,这样可以更加明确地指定模板文件所在的根目录。
在java代码里返回的页面位置 return “index”
因此,两种配置方式都可以使用,没有哪个更好一些。如果您的模板文件比较少,可以直接使用 classpath:/templates,如果模板文件比较多,可以使用 classpath:/templates/ 来更好地组织模板文件。无论哪种方式,都需要根据实际情况来选择合适的路径配置。
特别注意 模板文件的路径名大小写问题要一致
在使用thymeleaf时注意
HTML 中没有 xmlns:th="http://www.thymeleaf.org" 命名空间也可以解析 Thymeleaf,这是因为 Thymeleaf 引擎会尝试自动检测和解析表达式。
在没有添加命名空间的情况下,Thymeleaf 会尝试识别所有以 th: 开头的属性,并将其解析为 Thymeleaf 表达式。
但是,为了避免出现解析错误,建议在 HTML 标签中显式添加 xmlns:th="http://www.thymeleaf.org" 命名空间。这样可以确保 Thymeleaf 引擎能够正确地识别和解析 Thymeleaf 表达式,提高代码的可读性和可维护性
<!DOCTYPE html>
<html xmlns:th="http://www.thymeleaf.org">
<head>
<meta charset="UTF-8">
<title>My Page</title>
</head>
<body>
<h1 th:text="${pageTitle}">Page Title</h1>
<p th:text="${message}">Hello, World!</p>
</body>
</html>