Java Spring MVC:将3个下拉列表绑定到SimpleFormController中的日期属性
我应该如何配置该类以将三个下拉列表(日期、月份、年份)绑定到单个日期属性,从而使其工作方式与“每个属性一个请求参数”场景相同?Java Spring MVC:将3个下拉列表绑定到SimpleFormController中的日期属性,java,spring-mvc,propertyeditor,Java,Spring Mvc,Propertyeditor,我应该如何配置该类以将三个下拉列表(日期、月份、年份)绑定到单个日期属性,从而使其工作方式与“每个属性一个请求参数”场景相同? 我想a应该通过重写initBinder方法添加一些自定义属性编辑器。还有什么?您可以在表单中创建一个隐藏输入,并在用户选择日期时使用JavaScript填充它,然后绑定到命令对象中的该输入 也许您无论如何都会使用javascript来检查日期的正确性,所以为什么不在一个参数中设置就绪日期的格式呢 然后,您需要注册一个属性编辑器,该编辑器将从字符串“2008-05-20”
我想a应该通过重写initBinder方法添加一些自定义属性编辑器。还有什么?您可以在表单中创建一个隐藏输入,并在用户选择日期时使用JavaScript填充它,然后绑定到命令对象中的该输入 也许您无论如何都会使用javascript来检查日期的正确性,所以为什么不在一个参数中设置就绪日期的格式呢
然后,您需要注册一个属性编辑器,该编辑器将从字符串“2008-05-20”转换为日期对象。然后,我的命令对象中有三个字段-年、月、日,并将使用标准spring验证进行日期检查。Aleksey Kudryavtsev:您可以覆盖控制器中的onBind方法,我知道你不能在命令对象中摆弄一些特殊的东西,比如
dateField = new SimpleFormat("YYYY-mm-dd").parse(this.year + "-" + this.month + "-" this.day);
或:
但我更愿意用javascript进行验证,并使用一些可用的日期选择器组件,它们有很多…我还没有尝试过,但您可以尝试绑定到。这三个字段都有单独的setter和getter。谢谢您的回答。这是个好主意。但是,有没有一种方法可以在服务器端执行此操作?如何将这三个字段转换为日期属性?
Calendar c = Calendar.getInstance();
c.set(year, month, day);
dateField = calendar.getTime();