2016-03-18 1 views
2

я есть класс X с полем:послал текущую дату в Thymeleaf переменной

@DateTimeFormat(pattern = "dd/MM/yyyy HH:mm") 
private Date updateDate; 

У меня есть HTML с помощью метода = «пост»

<form class="form-horizontal" 
th:action="@{/x/save}" method="post"> 

Я хочу, чтобы получить текущую дату и послал его с помощью POST в поле updateDate:

    <span 
        th:text="${#dates.format(#dates.createNow(), 'dd/MM/yyyy HH:mm')}" 
        th:value="${#dates.format(#dates.createNow(), 'dd/MM/yyyy HH:mm')}" 
        th:id="*{updateDate}" th:name="*{updateDate}"></span> 

проблема заключается в том, что дата не передается через POST в updateDate поле. Я проверил его в браузере через Developer Tools. я не могу использовать только th:field здесь, потому что я хочу, текущую дату и я приобрести его с помощью:

th:value="${#dates.format(#dates.createNow(), 'dd/MM/yyyy HH:mm')}" 

, как это он также не передается через POST:

   <input 
        th:text="${#dates.format(#dates.createNow(), 'dd/MM/yyyy HH:mm')}" 
        th:value="${#dates.format(#dates.createNow(), 'dd/MM/yyyy HH:mm')}" 
        th:id="${updateDate}" th:name="${updateDate}" /> 

Но я вижу правильную дату в HTML ,

Решение:

<input name="updateDate" id="updateDate" 
       th:value="${#dates.format(#dates.createNow() , 'dd/MM/yyyy HH:mm')}" /> 

Осторожно:

это не идеальное решение:

  1. пользователь может управлять временем с помощью HTML изменить его перед отправкой.
  2. пользователь может открыть форму на 21.03, подождите 24 часа, а затем послал его, и время по-прежнему будет 21,03 ..
+0

Если вы не хотите использовать Spring для привязки к введенному просто использовать обычный HTML идентификатор и атрибуты имя. Также вы не можете использовать элемент span для публикации данных. Вы должны использовать тег ввода –

ответ

3

Если вы не хотите использовать Spring для привязки к введенному просто использовать обычный HTML-идентификатор и атрибуты имени. Также вы не можете использовать элемент span для публикации данных. Вы должны использовать тег ввода. например <input name="updateDate" id="updateDate" th:value="${#dates.format(#dates.createNow() , 'dd/MMM/yyyy HH:mm')}"/>

Лучшим подходом является установка значения updateDate в контроллере и использование синтаксиса привязки данных Spring.

<input type="text" th:field="*{updateDate}"/>

+0

спасибо - хороший ответ наверняка. Мне было интересно, может ли что-то подобное работать: '' – yami