我有一个包含日期字段的实体,' 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;
如何解决这个问题?