【问题标题】:Formatting th:field in Thymeleaf在 Thymeleaf 中格式化 th:field
【发布时间】:2013-12-20 03:10:32
【问题描述】:

我在 Thymeleaf 中有一个表单输入字段。该字段(下面的代码 sn-p 中的 bookingEntry.datefrom)是 Date 类型。我使用日期选择器来允许用户选择和格式化输入字段所需的日期。这一切都很好。

但是,我希望日期的初始值(我已设置为当前日期)以我选择的格式显示。那么,如何格式化最初显示在 th:field 中的日期。 th:value 被忽略(Thymeleaf 应该从支持对象获取值),我似乎无法将格式应用于 th:field。

Thymeleaf 代码是:

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

我确信我可以使用以我选择的任何格式初始化的 String,而不是 Date 类型,但我想知道是否有办法在 th:field 中格式化初始值?

非常感谢

【问题讨论】:

    标签: spring-mvc thymeleaf


    【解决方案1】:

    我错过了简单的答案,仅仅是因为我对 Spring 的了解有限。我在这里添加它,以防它帮助像我这样的其他新手。 传递给表单的对象中的元素上的@DateTimeFormat 注释完成了这项工作。它确保Date 对象以您希望的方式格式化(无论您是否使用Thymeleaf)。

    在上面的示例中,在bookingEntry 对象内

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

    【讨论】:

    • 我也错过了这个解决方案。当我使用 jquery ajax 提交 thymeleaf 表单时,它也可以工作,并且由于 Thymeleaf 中不支持的默认格式,Jackson 无法将日期值反序列化为 java.util.Date。
    • 这对我不起作用。当我使用空值提交表单时,表单提交会解析空日期,但是当我使用日期提交时,匹配 DateTimeFormat 注释中的样式,我收到“错误请求,验证失败”错误,状态 400。跨度>
    • 在用尽了许多其他尝试之后,就像一个魅力。顺便说一句,对于 2015 年 3 月 14 日类型的日期,BTW 模式应为“MM/d/yyyy”。
    • 老兄...谢谢你,我现在感觉自己像个白痴xD
    【解决方案2】:

    如果你的日期为空,它会给你错误。我们必须在解析日期之前检查值。

    <input  type="text" name="date" 
            th:value="${user.dateOfBirth}?${#dates.format(user.dateOfBirth, 'dd-MM-yyyy')}:''" 
            placeholder="dd-mm-yyyy"  id="pickyDate"/>
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-04-06
      • 1970-01-01
      • 1970-01-01
      • 2017-02-13
      • 1970-01-01
      • 1970-01-01
      • 2015-03-07
      相关资源
      最近更新 更多