关于springmvc日期问题的解决方式 除了本博客的【springMVC 前后台日期格式传值解决方式之 @DateTimeFormat的使用和配置】一文,
还有如下这种方式:
在Controller里加上这段代码:
1 @InitBinder
2 public void initBinder(ServletRequestDataBinder binder) {
3 /**
4 * 自动转换日期类型的字段格式
5 */
6 SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
7 binder.registerCustomEditor(Date.class, new CustomDateEditor(sdf, true));
8
9
10 }
注意,如果前台有多重日期格式,写成类似下面的方式是没有什么卵用的:
1 @InitBinder
2 public void initBinder(ServletRequestDataBinder binder) {
3 /**
4 * 自动转换日期类型的字段格式
5 */
6 SimpleDateFormat sdf1 = new SimpleDateFormat("yyyy-MM-dd");
7 SimpleDateFormat sdf2 = new SimpleDateFormat("yyyy年MM月");
8 try {
9 binder.registerCustomEditor(Date.class, new CustomDateEditor(sdf2, true));
10 }catch(Exception e) {
11 binder.registerCustomEditor(Date.class, new CustomDateEditor(sdf1, true));
12 }
13
14 }
怎么解决呢?
原文内容如下:
----------------------------------------------------------分界线开始-----------------------------------------------------------
配置文件为
<bean class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter">
<property name="webBindingInitializer">
<bean class="xx.xxx.MyBindingInitializer"/>
</property>
</bean>
MyBindingInitializer中,initBinder方法里的
binder.registerCustomEditor(Date.class, new XXXEditor());
在XXXEditor的setAsText方法中,使用系统所有可能用到的format格式一一尝试,捕获异常,最后正确绑定。
-------------------------------------------------------分界线结束----------------------------------------------------------------
至于其中的XXXEditor怎么写,大家可以参照例子中的CustomDateEditor,即:org.springframework.beans.propertyeditors.CustomDateEditor源码中怎么写的。