2013-12-03 4 views
7

У меня есть поле ввода формы в Тимелеафе. Поле (bookingEntry.datefrom в фрагменте кода ниже) - это тип Date. Я использую datepicker, чтобы позволить пользователю выбирать и форматировать нужную дату для ввода поля. Все в порядке.Форматирование th: поле в Thymeleaf

Однако, я хочу, чтобы начальное значение даты (которое я установил для текущей даты) отображалось в выбранном мной формате. Итак, как мне форматировать дату, первоначально показанную в поле th :. th: значение игнорируется (Thymeleaf получает значение со вспомогательного объекта, как и должно), и я не могу применить формат к полю th.

Thymeleaf код:

<input type="text" class="form-control getdate" th:field="*{datefrom}" placeholder="Date From" th:value="${#dates.format(bookingEntry.datefrom, 'dd-MMM-yyyy')}" />

Я уверен, что я мог бы использовать строку, которая инициализируется в любом формате, который я выбираю, а не типа Date, но я задавался вопросом, существует ли способ форматирования начальных значений в поле th:?

Большое спасибо

ответ

15

я пропустил простой ответ, просто из-за мое ограниченное знание Spring. Я добавляю его здесь, потому что он помогает любым другим новичкам, таким как я. Аннотации @DateTimeFormat к элементу в объекте, передаваемом в форму, выполняет задание. Он гарантирует, что объект Date будет отформатирован так, как вы хотите (независимо от того, используете ли вы Thymeleaf или нет).

В приведенном выше примере, в пределах bookingEntry объекта

@Temporal(DATE) 
@DateTimeFormat (pattern="dd-MMM-YYYY") 
private Date datefrom; 
+0

Я тоже пропустил это решение. Он также работает, когда я отправляю форму thymeleaf с jquery ajax, и Джексон не выполняет десериализацию значения даты в java.util.Date из-за неподдерживаемого формата по умолчанию в Thymeleaf. – bwfrieds

+0

Это не сработало для меня. Когда я отправляю свою форму с нулевым значением, форма отправляет синтаксический анализ нулевой даты, но когда я отправляю с датой, соответствующей стилю в аннотации DateTimeFormat, я получаю сообщение об ошибке «Ошибка запроса», статус 400. – djangofan

+0

работал как прелесть после того, как он был исчерпан многими другими попытками. Образец BTW должен быть «MM/d/yyyy» для типа даты 03/14/2015. – chAmi

0

В случае, если ваша дата имеет нулевое значение, это даст вам сообщение об ошибке. Мы должны проверить значение перед анализом даты.

<input type="text" name="date" 
     th:value="${user.dateOfBirth}?${#dates.format(user.dateOfBirth, 'dd-MM-yyyy')}:''" 
     placeholder="dd-mm-yyyy" id="pickyDate"/> 
Смежные вопросы