1

我有一个用户对象,并且用户有一个字段 DOB(出生日期)我已将该字段作为日历存储在用户 BO 中。

像这样的东西:

公共类用户BO {

private Calendar dateOfBirth;

public Calendar getDateOfBirth() {
    return dateOfBirth;
}

public void setDateOfBirth(Calendar dateOfBirth) {
    this.dateOfBirth = dateOfBirth;
}

}

现在我需要将此字段显示为 thymeleaf 中的日期字段而不是文本字段。我需要一个日期字段,因为我喜欢日期选择器 :)

这是我到目前为止所拥有的

<label class="col-xs-2">Date of Birth</label>
    <div class="col-xs-2">
    <input type="date" class="form-control" th:field="*{dateOfBirth}" placeholder="Date of Birth" />
    </div>  

但这给了我输出

输出图像

这不是我所期待的。我期望从服务中填充一个实际日期,但它向我展示了上面的内容。

我已阅读有关日历对象的序列化和反序列化以及编写某种转换器的信息,但我没有得到完整的上下文,为什么需要这样做。加上当我看到例子时

输入 type="text" 并正确填充日期。所以有人可以指导我这种转换的基础是什么,以及应该如何做的例子会很好。

谢谢

4

2 回答 2

0

首先你不需要使用Calendar. 一个简单java.util.Date的就足够了。

因此,您可以将引导日期选择器用于客户端日期选择器。假设日期选择器期望的格式是mm/dd/yyyy,那么您可以使用 Thymeleaf 表达式对象将格式设置dateOfBirth${#dates.format(dateOfBirth, 'MM/dd/yyyy')}

请注意,Thymeleaf 使用的格式类似于 Datepicker 使用的格式,SimpleDateFormat可以从此处的文档中找到

于 2017-11-09T20:23:15.517 回答
0

当您使用日期类型的输入元素时,日期值应始终格式化为 yyyy-mm-dd。显示的日期格式将根据用户浏览器的设置区域选择。

试试这个代码:

  <input type="date" value="10/14/2016" class="form-control" id="dateOfBirth"
              th:value="${#calendars.format(dateOfBirth,'yyyy-MM-dd')}" th:name="dateOfBirth" />
于 2017-11-10T09:56:24.787 回答