You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Thymeleaf日期访问异常求助:附相关HTML代码片段

解决Thymeleaf中日期无法访问/格式化的问题

首先看你提供的代码,最后一行的日期格式化表达式明显不完整,这是第一个需要修正的点。下面一步步帮你排查和解决:

1. 修正Thymeleaf日期格式化的语法错误

你当前的代码里th:text="${#dates.format(...)}"是不完整的,#dates.format()方法需要至少两个参数:要格式化的日期对象和日期格式字符串。

比如你的Post实体类如果有createTime(创建时间)字段,正确的写法应该是:

<div><span>发布时间: </span><span th:text="${#dates.format(post.createTime, 'yyyy-MM-dd HH:mm:ss')}"></span></div>

另外注意你提供的代码最后一个div标签没有闭合,要补上</div>。

2. 确保后端正确传递日期属性到Model

检查你的后端代码,确认:

  • Post实体类中存在对应的日期字段(比如private Date createTime;),并且有对应的getter方法(public Date getCreateTime())——Thymeleaf是通过getter方法访问属性的
  • 在控制器中把包含日期属性的post对象添加到Model里,比如:
@GetMapping("/post/{id}")
public String getPost(@PathVariable Long id, Model model) {
    Post post = postService.getById(id);
    // 确保post的createTime字段已经被正确赋值(比如从数据库查询得到)
    model.addAttribute("post", post);
    return "post-detail";
}

3. 处理日期为空的情况

如果日期字段可能为null,直接格式化会报错,你可以用Elvis运算符处理空值,或者先判断非空再显示:

  • 用Elvis运算符默认显示当前时间:
<div th:text="${#dates.format(post.createTime ?: new java.util.Date(), 'yyyy-MM-dd')}"></div>
  • 先判断非空再显示:
<div th:if="${post.createTime != null}">
    <span>发布时间: </span><span th:text="${#dates.format(post.createTime, 'yyyy-MM-dd HH:mm:ss')}"></span>
</div>
<div th:if="${post.createTime == null}">
    <span>发布时间: 未设置</span>
</div>

4. 检查Thymeleaf命名空间是否正确

虽然你没提到,但如果是新手容易忽略:确保HTML页面的根标签(比如<html>)包含Thymeleaf命名空间,否则Thymeleaf的表达式不会生效:

<html xmlns:th="http://www.thymeleaf.org">

按照上面的步骤逐一排查,应该就能解决日期无法访问/格式化的问题了。

内容的提问来源于stack exchange,提问作者aabk

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.21 07:43:56