spring-boot - 为什么@DateTimeFormat 在 th:text 中无效
问题描述
在我的 Spring Boot 2 应用程序中。
我的模型:
import org.springframework.format.annotation.DateTimeFormat;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.validation.constraints.NotNull;
import java.util.Date;
@Entity
public class Category {
@Id
@GeneratedValue
private int id;
@NotNull
private String name;
private String description;
@NotNull
@DateTimeFormat(pattern = "dd.MM.yyyy HH:mm:ss")
private Date created;
@DateTimeFormat(pattern = "dd.MM.yyyy HH:mm:ss")
private Date updated;
这里模板:
<!DOCTYPE html>
<html xmlns:th="http://www.thymeleaf.org">
<head>
<title th:text="${appName}">Category template title</title>
<link th:href="@{/public/style.css}" rel="stylesheet"/>
<meta charset="UTF-8"/>
</head>
<body>
<div class="container entity_list">
<h2>Categories</h2>
<br/>
<table>
<tr>
<th width="80">ID</th>
<th width="120">Name</th>
<th width="200">Created At</th>
<th width="200">Updated At</th>
<th width="60"></th>
<th width="60"></th>
</tr>
<th:block th:each="category : ${categoryList}">
<tr>
<td th:text="${category.id}"></td>
<td th:text="${category.name}"></td>
<td th:text="${category.created}"></td>
<td th:text="${category.updated}"></td>
<td><a th:href="@{/category/edit/{id}(id=${category.id})}">Edit</a></td>
<td><a th:href="@{/category/delete/{id}(id=${category.id})}">Delete</a></td>
</tr>
</th:block>
</table>
</div>
</body>
</html>
并在这里生成html:
<!DOCTYPE html>
<html>
<head>
<title></title>
<link href="/public/style.css" rel="stylesheet"/>
<meta charset="UTF-8"/>
</head>
<body>
<div class="container entity_list">
<h2>Categories</h2>
<br/>
<table>
<tr>
<th width="80">ID</th>
<th width="120">Name</th>
<th width="200">Created At</th>
<th width="200">Updated At</th>
<th width="60"></th>
<th width="60"></th>
</tr>
<tr>
<td>1</td>
<td>Toys</td>
<td>2020-01-08 14:44:30.035</td>
<td></td>
<td><a href="/category/edit/1">Edit</a></td>
<td><a href="/category/delete/1">Delete</a></td>
</tr>
<tr>
<td>2</td>
<td>Electronics</td>
<td>2020-01-08 14:44:30.136</td>
<td></td>
<td><a href="/category/edit/2">Edit</a></td>
<td><a href="/category/delete/2">Delete</a></td>
</tr>
<tr>
<td>3</td>
<td>Supermarket</td>
<td>2020-01-08 14:44:30.138</td>
<td></td>
<td><a href="/category/edit/3">Edit</a></td>
<td><a href="/category/delete/3">Delete</a></td>
</tr>
</table>
</div>
</body>
</html>
如您所见,日期的格式不是dd.MM.yyyy HH:mm:ss。为什么?
解决方案
使用双括号表达式应该应用你的@DateTimeFormat
. (这对于表单域会自动发生。)
<td th:text="${{category.created}}"></td>
<td th:text="${{category.updated}}"></td>
推荐阅读
- android - 如何在 android 中构建现有的 React-native ios 应用程序?
- git - 从 HEAD 签出文件的原因 ^ 将文件放在暂存区
- postgresql - 运行 psql 命令时出现 psql 的符号查找错误
- java - 如何使用来自 html 表单的 POST 的 Spring Security?
- c# - 使用 Newtonsoft.Json 将名称反序列化为值
- json - Swift 5:如何从 JSONDecoder().decode 获取数据?
- python - 如何在 PyGame 中添加摩擦力
- linux - Dockerized nginx 在 ssl 模式下失败
- angular - 角度动态路径数
- sql - 如何从 Postgresql 中的计算列中获取平均值?