我的Thymeleaf模板中有这一行。

<td th:text="${activity.loggedTimestamp}"></td>

我想在格式化之前将这个long值转换为日期。如果已经是约会,我会这样做:
<td th:text="${#dates.format(activity.loggedTimestamp)}"></td>

但是,由于它的价值很高,所以我想先将它设为日期。

我在文档中找到了一些相关方法。但是,不符合我的要求。
/*
 * Create date (java.util.Date) objects from its components
 */
${#dates.create(year,month,day)}
${#dates.create(year,month,day,hour,minute)}
${#dates.create(year,month,day,hour,minute,second)}
${#dates.create(year,month,day,hour,minute,second,millisecond)}

/*
 * Create a date (java.util.Date) object for the current date and time
 */
${#dates.createNow()}

/*
 * Create a date (java.util.Date) object for the current date (time set to 00:00)
 */
${#dates.createToday()}

最佳答案

引用ThymeLeaf documentation:

我们已经提到过${...} 表达式实际上是在上下文中包含的变量映射上执行的OGNL(对象图导航语言)表达式

有关OGNL语法和功能的详细信息,您应该阅读OGNL语言指南,网址为:http://commons.apache.org/ognl/

因此,您可以通过该链接指向OGNL documentation:

您可以使用new运算符来像Java中一样创建新对象。区别在于,您必须为java.lang包中的类以外的其他类指定完全限定的类名。

只有在使用默认的ClassResolver的情况下,这才是正确的。使用自定义类解析器,可以以这样的方式映射包:可以对类进行更多类似于Java的引用。有关使用ClassResolver类的详细信息,请参阅《 OGNL开发人员指南》(例如new java.util.ArrayList(),而不是简单的new ArrayList())。

OGNL使用与重载方法调用相同的过程选择正确的构造函数来进行调用。

结论

你写:

<td th:text="${#dates.format(new java.util.Date(activity.loggedTimestamp))}"></td>

09-25 21:36