在Thymeleaf发送当前日期变量

时间:2016-03-18 10:32:53

标签: java spring date thymeleaf

我的课程X有字段:

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

我有html with 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')}"/>

请注意:

这不是完美的解决方案:

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

1 个答案:

答案 0 :(得分:3)

如果您不想使用Spring绑定到您的输入,只需使用纯HTML标识和名称属性。此外,您不能使用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}"/>