如何配置类以将三个下拉列表(日期,月份,年份)绑定到单个Date属性,以使其按照“每个属性的单个请求参数”方案的工作方式工作? 我想应该通过重写initBinder方法添加一些自定义PropertyEditors。还有什么?
答案 0 :(得分:4)
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中进行验证并使用一些可用的日期选择器组件,其中有很多...
答案 1 :(得分:1)
您可以在表单中创建隐藏输入,并在用户选择日期时使用JavaScript填充它,然后在命令对象中绑定到此输入。
可能你会使用javascript来检查日期的正确性,所以为什么不在一个参数中格式化使用日期。
然后,您需要注册一个属性编辑器,该编辑器将从字符串“2008-05-20”转换为Date对象。
答案 2 :(得分:0)
然后我会在命令对象中有三个字段 - 年,月,日,并使用标准弹簧验证进行日期检查
答案 3 :(得分:0)
我没有尝试过,但您可以尝试绑定到MutableDateTime in the Joda library。它为所有三个领域都有独立的制定者和吸气剂。