我有X类与字段:

@DateTimeFormat(pattern = "dd/MM/yyyy HH:mm")
private Date updateDate;


我有html与method =“ post”

<form class="form-horizontal"
th:action="@{/x/save}" method="post">


我想获取当前日期,并通过POST发送到updateDate字段:

<span th:text="${#dates.format(#dates.createNow(), 'dd/MM/yyyy HH:mm')}"
      th:value="${#dates.format(#dates.createNow(), 'dd/MM/yyyy HH:mm')}"
      th:id="*{updateDate}" th:name="*{updateDate}">
</span>


问题是日期没有通过POST发送到updateDate字段。我通过Developer Tools在浏览器中检查了它。
我不能只在这里使用th:field,因为我想要当前日期,并且通过以下方式获取它:

th:value="${#dates.format(#dates.createNow(), 'dd/MM/yyyy HH:mm')}"


这样,它也不会通过POST发送:

<input th:text="${#dates.format(#dates.createNow(), 'dd/MM/yyyy HH:mm')}"
       th:value="${#dates.format(#dates.createNow(), 'dd/MM/yyyy HH:mm')}"
       th:id="${updateDate}" th:name="${updateDate}"/>


但是我在html中看到正确的日期。

解:

<input name="updateDate" id="updateDate"
       th:value="${#dates.format(#dates.createNow() , 'dd/MM/yyyy HH:mm')}"/>


谨防:

这不是完美的解决方案:


用户可以在发布前通过HTML更改时间来操纵时间。
用户可以在21.03上打开表单,等待24小时然后发送,时间仍然是21.03 ..

最佳答案

如果您不想使用Spring绑定到您的输入,只需使用纯HTML id和name属性。同样,您不能使用span元素来发布数据。您必须使用输入标签。例如<input name="updateDate" id="updateDate" th:value="${#dates.format(#dates.createNow() , 'dd/MMM/yyyy HH:mm')}"/>

更好的方法是在控制器中设置updateDate值,并使用Spring数据绑定语法。

<input type="text" th:field="*{updateDate}"/>

09-25 20:27