Thymeleaf中处理日期的完整指南
- 作者
Thymeleaf是一个可以与Spring无缝集成的Java模板引擎。除了基本功能外,Thymeleaf还提供了一系列实用工具对象,可以帮助我们在应用中处理常见任务。
本文将讨论如何在Thymeleaf中处理和格式化新旧Java日期类,以及Thymeleaf 3.0的一些新特性。
2. Maven依赖
首先,我们需要在pom.xml中添加以下依赖:
<dependency>
<groupId>org.thymeleaf</groupId>
<artifactId>thymeleaf</artifactId>
<version>3.0.11.RELEASE</version>
</dependency>
<dependency>
<groupId>org.thymeleaf</groupId>
<artifactId>thymeleaf-spring5</artifactId>
<version>3.0.11.RELEASE</version>
</dependency>
注意:对于Spring 4项目,需要使用thymeleaf-spring4而不是thymeleaf-spring5。
为了使用Java 8的新日期类,还需要添加:
<dependency>
<groupId>org.thymeleaf.extras</groupId>
<artifactId>thymeleaf-extras-java8time</artifactId>
<version>3.0.4.RELEASE</version>
</dependency>
3. java.util和java.time
Java 8引入了新的日期时间API。主要区别在于新API区分了时间的机器视图和人类视图。
要使用新的Time包,需要配置模板引擎使用Java8TimeDialect:
private ISpringTemplateEngine templateEngine(ITemplateResolver templateResolver) {
SpringTemplateEngine engine = new SpringTemplateEngine();
engine.addDialect(new Java8TimeDialect());
engine.setTemplateResolver(templateResolver);
return engine;
}
这将添加#temporals对象,允许在Thymeleaf模板中格式化和创建Temporal对象。
3.1 格式化日期
我们可以使用以下方式格式化日期:
<h1>ISO格式</h1>
<p th:text="${#dates.formatISO(standardDate)}"></p>
<p th:text="${#temporals.formatISO(localDateTime)}"></p>
<h1>自定义格式</h1>
<p th:text="${#dates.format(standardDate, 'yyyy-MM-dd HH:mm')}"></p>
<p th:text="${#temporals.format(localDateTime, 'yyyy-MM-dd HH:mm')}"></p>
3.2 获取特定日期字段
对于java.util.Date:
${#dates.day(date)}
${#dates.month(date)}
${#dates.year(date)}
...
对于java.time包:
${#temporals.day(date)}
${#temporals.month(date)}
${#temporals.year(date)}
...
4. 在表单中使用日期选择器
我们可以这样在Thymeleaf表单中使用日期选择器:
<form th:action="@{/saveStudent}" method="post" th:object="${student}">
<input type="date" th:field="${student.birthDate}"/>
<button type="submit">提交</button>
</form>
控制器:
@PostMapping("/saveStudent")
public String saveStudent(Model model, @ModelAttribute Student student) {
model.addAttribute("student", student);
return "displayDate";
}
显示页面:
<h1>学生生日</h1>
<p th:text="${#dates.format(student.birthDate, 'yyyy-MM-dd')}"></p>
5. 总结
本文介绍了Thymeleaf 3.0中处理Java日期的主要功能。完整代码可以在GitHub上找到。建议先在浏览器中测试代码,然后再编写单元测试。
分享内容