在 Thymeleaf 日期输入中设置 th:value?

Posted

技术标签:

【中文标题】在 Thymeleaf 日期输入中设置 th:value?【英文标题】:Set th:value in Thymeleaf date input? 【发布时间】: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 日期选择器,但也没有用。请问有什么建议吗?

【问题讨论】:

【参考方案1】:

    如果您使用type="date",则浏览器可以选择日期格式。如果你想自己格式化,你必须使用type="text"

    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 跨度>

以上是关于在 Thymeleaf 日期输入中设置 th:value?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 HTML 日期输入标签中设置日期格式?

用于在 Chrome 中设置 HTML5 日期输入日历样式的 CSS

在变量中设置日期格式

在日期字段中设置日期将其设置为前一天[重复]

如何在 BigQuery 中设置动态会计日期范围?

如何在页眉 oracle apex 中设置项目值