Spring MVC:将3个下拉列表绑定到SimpleFormController中的date属性
时间:2020-03-06 15:00:59 来源:igfitidea点击:
我应该如何配置该类以将三个下拉列表(日期,月份,年份)绑定到单个Date属性,以便它按"针对每个属性的单个请求参数"方案的方式工作?
我猜应该通过重写initBinder方法来添加一些自定义PropertyEditor。还有什么 ?
解决方案
我们可以在表单中创建一个隐藏的输入,并在用户选择日期时使用JavaScript填充它,然后将其绑定到命令对象中。
无论如何,我们可能仍将使用javascript来进行诸如检查日期的正确性之类的事情,所以为什么不将可用日期设置为一个参数。
然后,我们需要注册一个属性编辑器,该编辑器将从字符串" 2008-05-20"转换为Date对象。
那么我将在命令对象的年,月,日中包含三个字段,并将使用标准的Spring验证进行日期检查
Aleksey Kudryavtsev:我们可以在控制器中覆盖onBind方法,但不能在命令对象中摆弄一些特殊的东西,例如
dateField = new SimpleFormat("YYYY-mm-dd").parse(this.year + "-" + this.month + "-" this.day);
或者:
Calendar c = Calendar.getInstance(); c.set(year, month, day); dateField = calendar.getTime();
但是我宁愿在javascript中进行验证并使用一些可用的日期选择器组件,其中有很多...