2017-02-21 6 views
0

У меня возникла проблема с форматом даты Тимелеафа, когда я отправляю дату. HTML показывает дату правильно в h3 тег, но не внутри кода DatePicker, и я не могу понять, почему ....Как показать th: значение в формате даты Тимелеафа?

<div> 
 
<label for="birthdate" th:text="#{editprofile.about4.birthdate}">Birth date</label> 
 
<label class="input"> 
 
<i class="icon-append fa fa-calendar"></i> 
 
<input type="date" name="date" id="birthdate" class="form-control margin-bottom-20" th:value="${#dates.format(profile2about2th.birthdate,'yyyy/MM/dd')}" th:field="*{birthdate}"> 
 
</input> 
 
</label> 
 
<h3 th:text="${#dates.format(profile2about2th.birthdate,'yyyy/MM/dd')}"></h3> 
 
</div>

почему он показывает дату с часами в один место и правильно в другом ...... input type = "date" name = "birthdate" id = "birthdate" class = "form-control margin-bottom-20" value = "1932-10-10 00 : 00: 00,0"

enter image description here

Thanks

ответ

0

th:field и th:value не должны использоваться на одном и том же месте. (th:field устанавливает атрибуты name, id и value тега, в котором он находится.) Вы увидите, что вы получите правильное форматирование, если вы остановите th:field, но тогда форма не будет отправлена ​​правильно. На мой взгляд, способ исправить это:

Добавить метод InitBinder к контроллеру, например:

@Controller 
public class WhateverController { 
    . 
    . 
    . 

    @InitBinder 
    public void initBinder (WebDataBinder binder) { 
     binder.registerCustomEditor(Date.class, new CustomDateEditor(new SimpleDateFormat("yyyy/MM/dd"), true)); 
    } 

    . 
    . 
    . 
} 

Удалить -м: значение. Ваш HTML должен выглядеть следующим образом:

<div> 
    <label for="birthdate" th:text="#{editprofile.about4.birthdate}">Birth date</label> 
    <label class="input"> 
     <i class="icon-append fa fa-calendar"></i> 
     <input type="date" name="date" id="birthdate" class="form-control margin-bottom-20" th:field="*{birthdate}" /> 
    </label> 

    <h3 th:text="${#dates.format(profile2about2th.birthdate,'yyyy/MM/dd')}"></h3> 
</div> 

Есть способы добавления глобальных связующих, а также, если вы хотите, чтобы это работало для всего приложения, а не только, что один контроллер.

+0

Привет, Большое спасибо Metroids. Есть ли решение для чистого тимелеафа? Я имею в виду, не делая это в контроллере? (Вот почему я тоже спросил на форуме). – Mike

+0

Если вы хотите использовать 'th: field =" * {birthdate} "' (и преобразовать значение POSTED обратно в дату java), вы должны сделать это в контроллере. – Metroids

Смежные вопросы