如何以Thymeleaf日期格式显示:值?

时间:2017-02-21 17:02:06

标签: html5 datepicker thymeleaf

发送日期时,我遇到了Thymeleaf日期格式的问题。 HTML在h3标签内正确显示日期,但不在datepicker的代码中,我无法理解为什么....



<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> 
&#13;
&#13;
&#13;

为什么它在一个地方显示日期,在另一个地方正确显示......输入类型=&#34;日期&#34;名称=&#34;出生日期&#34; ID =&#34;出生日期&#34; class =&#34; form-control margin-bottom-20&#34; value = &#34; 1932-10-10 00:00:00.0&#34;

Here

由于

2 个答案:

答案 0 :(得分:0)

不应在同一代码上使用

th:fieldth:value。 (th:field设置其所在标记的nameidvalue属性。)如果您离开{{},您将看到正确的格式设置{ {1}},但表单无法正确提交。在我看来,解决这个问题的方法是:

将InitBinder方法添加到控制器,如下所示:

th:field

删除th:值。您的HTML应如下所示:

@Controller
public class WhateverController {
    .
    .
    .

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

    .
    .
    .
}

如果您希望这个方法适用于整个应用程序而不仅仅是那个控制器,还有一些方法可以添加全局绑定器。

答案 1 :(得分:0)

确保作为值传入的日期(在本例中为生日)采用以下格式:

   yyyy-mm-dd

NOT在日期选择器的格式 mm/dd/yyyy

阅读更多here