【问题标题】:Set th:value in Thymeleaf date input?在 Thymeleaf 日期输入中设置 th:value?
【发布时间】:2018-12-18 12:26:16
【问题描述】:

我使用 Thymeleaf,我想在用户编辑之前向用户显示 现有 日期值,并且如果他们不想编辑它,他们可以保持原样。我一直在尝试设置日期输入值,但它不起作用。

我尝试了什么:

艺术家:

private Date dateDebut;

控制器:

String dateDebut = Artist.getDateDebut().toString();
model.addAttribute("dateDebut", dateDebut);

查看:

<input type="date" class="form-control" name="dateDebut" th:value="${dateDebut}" />

但是这不起作用。它仍然向我显示这样的日期输入:https://i.stack.imgur.com/MdZIw.png,而不是我试图显示的设置值。

我尝试过使用 Bootstrap 日期选择器,但也没有用。请问有什么建议吗?

【问题讨论】:

    标签: html datepicker thymeleaf default-value


    【解决方案1】:
    1. 如果您使用type="date",则浏览器可以选择日期格式。如果你想自己格式化,你必须使用type="text"

    2. th:value="${dateDebut}" 不会尊重您的 @DateTimeFormat 注释。如果您希望 thymeleaf 以该格式输出,您应该使用 double-brace 语法 - 例如 th:value="${{dateDebut}}" - 或使用 th:field 代替(这意味着其他更改)。在这种情况下,前者可能更好。

    编辑:

    如果要使用type="date",请保留注解@DateTimeFormat (pattern="yyyy-MM-dd")并使用双大括号:

    <input type="date" class="form-control" name="dateDebut" th:value="${{dateDebut}}" />
    

    或者,您可以使用日期格式化函数:

    <input type="date" class="form-control" name="dateDebut" th:value="${#dates.format(dateDebut, 'yyyy-MM-dd')}" />
    

    【讨论】:

    • 感谢您的快速回答!然而,我的问题不仅在于格式,还在于 设置输入值 在编辑之前显示。我不介意格式,因为正如您所说,它取决于浏览器,并且我正在开发的应用程序将在法语浏览器上使用,因此默认情况下日期格式为“dd-mm-yyyy”。我刚刚添加了 @DateTimeFormat 因为我认为它有助于保存到数据库(我猜我错了)。您使用 type="text" 的建议有效,但如果我这样做,我将无法看到我想使用的日历的视觉效果~我将编辑我的问题
    • 谢谢!日期格式化功能的第二个建议有效。 (对于任何未来的读者)在发送到视图之前,我还必须在控制器中添加 dateDebut.substring(0, 10).replace('-', '/') ,否则它会给我一个从 String 到 Date 的 ConversionFailedException 跨度>
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-09-03
    • 2015-03-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多