首页 > 解决方案 > thymeleaf 日期格式,而每个

问题描述

我正在尝试在百里香中执行 forEach 时应用 dates.format。但我收到了这条信息

org.thymeleaf.exceptions.TemplateProcessingException:评估 OGNL 表达式的异常:“e.datesCoordinates.created”(模板:“模板/警报”-第 262 行,第 48 列)

如果我在“th:each”之外执行它,它会完美运行。我怎样才能让它工作?

<div class="content" th:each="e : ${events}">
                            <div class="info date" th:value="${e.datesCoordinates.created}? ${#dates.format(e.datesCoordinates.created, 'dd/MM/yyyy HH:mm')}"></div>
                            <div class="info operator" th:text="|${e.owner.first_name} ${e.owner.last_name}|"></div>
                        </div>

标签: javathymeleaf

解决方案


由于 e.datesCoordinates.created 是一个字符串,因此您需要先对其进行解析,然后才能对其进行格式化。以下代码应该可以工作。

<th:block th:with="sdf = ${new java.text.SimpleDateFormat('dd/MM/yyyy HH:mm')}">      
    <div class="content" th:each="e : ${events}">
        <div class="info date" th:value="${e.datesCoordinates.created}? ${#dates.format(sdf.parse(e.datesCoordinates.created), 'dd/MM/yyyy HH:mm')}"></div>
        <div class="info operator" th:text="|${e.owner.first_name} ${e.owner.last_name}|"></div>
    </div>
</th:block>

重要的

使用new java.text.SimpleDateFormat时需要像当前字符串格式一样匹配表达式。例如,如果您正在保存10-03-2018,那么您的代码将如下所示${new java.text.SimpleDateFormat('dd-MM-yyyy')}


推荐阅读