Thymeleaf相同的日期格式:text和th:field

时间:2018-05-18 11:49:06

标签: spring date jpa thymeleaf

我有一个包含日期字段的实体,' validFrom'。我想在日期为只读的表格中显示日期2次,在输入字段中显示日期,可以设置日期。我的问题是我无法弄清楚如何在两种情况下使用客户端Locale正确显示日期,该客户端Locale使用以下格式:dd.MM.yyyy

这是jpa实体(不相关的注释):

public class Category {

    @javax.persistence.Temporal(TemporalType.DATE)
    @DateTimeFormat(pattern = "yyyy-MM-dd")
    private java.sql.Date validFrom;

    ....

}

以下是显示实体的表格:

<tr th:each="item: ${allItems}">
    <td><span th:text="${{item.validFrom}}"></span></td>

以下是用户可以创建实体并输入日期的页面:

<form th:action="@{/categories/edit}" th:object="${entity}" method="post">
    <input type="date" th:field="*{validFrom}"/>

使用此配置,我在输入字段中获得了正确的格式(dd.MM.yyyy),但文本字段中的格式错误(yyyy-MM-dd)。

当我将实体中的注释更改为

@DateTimeFormat(pattern = "dd.MM.yyyy")

我在文本字段中获得了正确的格式,但输入字段仍为空,并在浏览器控制台中显示以下错误消息:

  

指定值&#34; 18.05.2018&#34;不符合要求   格式,&#34; yyyy-MM-dd&#34;。

我尝试的最后一件事是在文本字段中使用百里香的#date.format(日期)接近一个。不幸的是,这也附加了HH:MM:SS,我不想要。

现在我可以通过格式&#39; dd.MM.yyyy&#39;作为第二个参数,然后它被硬编码到我的html中吹了i18n。所以我试图传递我在messages.properties中指定的#{date.format},但这导致了解析错误。

  

表达式[#dates.format(item.validFrom,#{date.format})] @ 31:   EL1043E:意外的令牌。预期的标识符&#39;但是好像({)&#39;

如何解决这个问题?

0 个答案:

没有答案