当我们使用 Spring Boot 开发 Web 应用程序时,通常需要使用一些模板引擎来动态渲染我们的 HTML 页面。其中,Thymeleaf 是一个非常流行的模板引擎,它与 Spring Boot 集成非常容易。接下来,我将提供一份完整的攻略,指导您如何将 Thymeleaf 模板引擎添加到 Spring Boot 中。
步骤1:添加依赖
首先,您需要配置 pom.xml 文件:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-thymeleaf</artifactId>
</dependency>
这个依赖项包含了 Thymeleaf 模板引擎及其依赖项。
步骤2:配置视图解析器(View Resolver)
这里,我们需要添加一个视图解析器(View Resolver),它将负责将 Thymeleaf 模板映射到控制器方法返回的视图。下面是一个示例配置:
@Configuration
public class WebConfig implements WebMvcConfigurer {
@Bean
public ViewResolver thymeleafViewResolver() {
final ThymeleafViewResolver resolver = new ThymeleafViewResolver();
resolver.setTemplateEngine(thymeleafTemplateEngine());
resolver.setCharacterEncoding("UTF-8");
return resolver;
}
@Bean
public ISpringTemplateEngine thymeleafTemplateEngine() {
SpringTemplateEngine engine = new SpringTemplateEngine();
engine.setEnableSpringELCompiler(true);
engine.setTemplateResolver(thymeleafTemplateResolver());
return engine;
}
@Bean
public ITemplateResolver thymeleafTemplateResolver() {
final SpringResourceTemplateResolver resolver = new SpringResourceTemplateResolver();
resolver.setPrefix("classpath:/templates/");
resolver.setTemplateMode(TemplateMode.HTML);
resolver.setSuffix(".html");
resolver.setTemplateMode("HTML5");
resolver.setCharacterEncoding("UTF-8");
resolver.setCacheable(false);
return resolver;
}
}
这个配置文件将以“classpath:/templates/”为目录加载 HTML 模板,并将 HTML5 视为默认模板模式。
步骤3:创建 Thymeleaf 模板
现在,您可以创建一个 Thymeleaf 模板了。
例如,创建一个包含 Thymeleaf 变量的 header.html 文件:
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml"
xmlns:th="http://www.thymeleaf.org">
<head>
<meta charset="UTF-8">
<title>首页</title>
</head>
<body>
<header th:fragment="header">
<nav>
<ul>
<li><a th:href="@{/}">首页</a></li>
<li><a th:href="@{/about}">关于我们</a></li>
<li><a th:href="@{/contact}">联系我们</a></li>
</ul>
</nav>
</header>
</body>
</html>
注意,在模板中,使用 th: 前缀声明变量。
步骤4:创建控制器并返回 Thymeleaf 视图
接下来,您需要创建一个控制器,它将返回您刚才创建的 Thymeleaf 模板。
例如,创建一个 HomeController 类:
@Controller
public class HomeController {
@GetMapping("/")
public String home(Model model) {
return "home";
}
@GetMapping("/about")
public String about(Model model) {
return "about";
}
@GetMapping("/contact")
public String contact(Model model) {
return "contact";
}
}
这个控制器有 3 个处理方法,分别对应于上面 header.html 中声明的 3 个链接。您可以在这些处理方法中使用 Model 对象来设置变量。
例如,创建一个 home.html 文件来显示 home 控制器的内容:
<!DOCTYPE html>
<html xmlns:th="http://www.thymeleaf.org">
<head>
<meta charset="UTF-8">
<title>首页</title>
</head>
<body>
<header th:replace="header :: header"></header>
<div>
<h2>欢迎来到我的博客!</h2>
<p>这是一个 Spring Boot + Thymeleaf 的示例项目。</p>
</div>
</body>
</html>
如此简单,我们已经完成了将 Thymeleaf 模板引擎添加到 Spring Boot 项目中的过程。
示例1:添加变量到模板中
您也可以使用 Model 对象来在模板中添加变量。例如,您可以添加一个时间戳变量:
@GetMapping("/time")
public String time(Model model) {
model.addAttribute("time", LocalDateTime.now());
return "time";
}
然后在模板 time.html 中使用它:
<!DOCTYPE html>
<html xmlns:th="http://www.thymeleaf.org">
<head>
<meta charset="UTF-8">
<title>时间戳</title>
</head>
<body>
<header th:replace="header :: header"></header>
<div>
<h2>现在的时间是:</h2>
<p th:text="${time}">2022-07-30T21:34:35.902</p>
</div>
</body>
</html>
示例2:循环添加变量
对于更复杂的模板,您可以使用 Thymeleaf 的循环功能来遍历集合并动态添加变量。例如,如果有一个包含简单文章对象的列表:
@GetMapping("/articles")
public String articles(Model model) {
List<Article> articles = Arrays.asList(
new Article("Spring Boot 入门教程", "2022-07-30"),
new Article("Spring Boot 自动配置原理", "2022-07-31"),
new Article("Spring Boot + Thymeleaf 实战", "2022-08-01")
);
model.addAttribute("articles", articles);
return "articles";
}
则可以在 articles.html 模板中使用以下代码将其呈现:
<!DOCTYPE html>
<html xmlns:th="http://www.thymeleaf.org">
<head>
<meta charset="UTF-8">
<title>文章列表</title>
</head>
<body>
<header th:replace="header :: header"></header>
<h2>文章列表</h2>
<table>
<tr>
<th>标题</th>
<th>日期</th>
</tr>
<tr th:each="article : ${articles}">
<td th:text="${article.title}">Spring Boot 入门教程</td>
<td th:text="${article.date}">2022-07-30</td>
</tr>
</table>
</body>
</html>
这是将 Thymeleaf 模板引擎添加到 Spring Boot 项目中的简单过程,同时也展示了一些模板的常见用法。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:springBoot加入thymeleaf模板的方式 - Python技术站