spring表单控件默认为现在

8hhllhi2  于 2021-06-30  发布在  Java
关注(0)|答案(1)|浏览(266)

我使用spring为出生日期选择了三个控件(日、月和年)form:select to org.joda.time.localdate。
由于出生日期是可选的,我想它如果日期可以默认为空。不过,出生日期是以今天的日期起首的。即使我在模型中将出生日期设置为null,也会发生这种情况。
这意味着在提交表单时,今天的日期将作为该字段的值发送,这不是我想要的。我不太关心日期是如何存储在数据库中的,只要null表示是清晰的(当然,null要比0000-00-00:00:00更好)。
我怎样才能解决这个问题?我可以为localdate编写一个 Package 器,它的默认值为null,并且只有在表单绑定调用setter时才初始化localdate。这似乎是一个相当普遍的问题,所以也许有更好的方法。

wdebmtf2

wdebmtf21#

我已经找到了解决这个问题的部分方法,但我承认我不明白它为什么有效。将控件移动到jsp标记中有帮助。这在第一页视图中不显示选定的日期。如果用户输入日期并提交,则会在页面刷新中显示。
但是,当表单在selects为空的情况下提交时,使用日期选择器(绑定到今天的日期)将三个selects链接到的隐藏输入的值提交,这是不可取的。如果隐藏的输入也没有被填充的话,这将是理想的,但是我认为用一个初始化日期字段为null或空字符串的对象 Package localdate是实现这一点的唯一方法。这是在第一页加载时显示未选中日期的代码。

<spring:bind path="${path}.dayOfMonth">
  <select>
       <option value="0"></option>
       <c:forEach items="${days}" var="day">
         <option value="${day}"<c:if test="${date.dayOfMonth eq day}"> selected="selected"</c:if>>${day}</option>
       </c:forEach>
  </select>
</spring:bind>
-- month and year dropdowns
<form:input path="${datepickerPath}" cssStyle="display:none;" />

相关问题