在 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?的主要内容,如果未能解决你的问题,请参考以下文章