У меня есть объект, который содержит поле даты 'validFrom'.Я хочу, чтобы отображать дату 2 раза, один раз в таблице, где дата только для чтения, один раз в поле ввода, где можно установить дату.Моя проблема в том, что я не могу понять, как правильно отображать дату в обоих случаях, используя клиентскую локаль, которая использует этот формат: 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}"/>
В этой конфигурации я получаю правильный формат (дд.мм.гггг) в поле ввода, но неверный формат в текстовом поле (гггг-ММ-дд).
Когда я изменяю аннотацию в объектена
@DateTimeFormat(pattern = "dd.MM.yyyy")
Я получаю правильный формат в текстовом поле, но поле ввода остается пустым со следующим сообщением об ошибке в консоли браузера:
Указанное значение "18.05.2018 "не соответствует требуемому формату,« гггг-ММ-дд ».
Последнее, что я попробовал, - это один из подходов, использующий # date.format (date) тимилиф в текстовом поле.К сожалению, это также добавляет HH: MM: SS, который я не хочу.
Теперь я могу, конечно, передать формат 'dd.MM.yyyy' в качестве второго параметра, но затем он жестко закодирован в мой HTML, который дуетi18n.Поэтому я попытался передать # {date.format}, который я указал в моих messages.properties, но это вызвало ошибку синтаксического анализа.
Выражение [# date.format (item.validFrom, # {date).format})] @ 31: EL1043E: Неожиданный токен.Ожидаемый «идентификатор», но был «lcurly ({)»
Как решить эту проблему?