CustomDateEditor,WebBindingInitializer

阅读更多
请问我使用了Spring MVC表单验证Date类型,已经在继承了SimpleFormController的自己的Controller里的initBinder()写好:
DateFormat fmt = new SimpleDateFormat("yyyy-MM-dd");
CustomDateEditor dateEditor = new CustomDateEditor(fmt, true);
binder.registerCustomEditor(Date.class, dateEditor);
数据绑定没有问题,但是客户提交数据时,输入字母或者非yyyy-MM-dd格式的字符串,比如输入dd,
处输出错误:
Failed to convert property value of type [java.lang.String] to required type [java.util.Date] for property time; nested exception is java.lang.IllegalArgumentException: Could not parse date: Unparseable date: "dd"

问题是,如何才能将这样的错误信息变成自己想要的字符提示.本人已经试过在Validator里验证,判断当为fieldError时error.rejectValue(),但发现我想要的错误提示却跟在先前的IllegalArgumentException提示的后面一起弹出,极度郁闷!

public class MyBindingInitializer implements WebBindingInitializer { 
 
    public void initBinder(WebDataBinder binder, WebRequest request) { 
        SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");  //可以設定任意的日期格式 
        dateFormat.setLenient(false); 
        binder.registerCustomEditor(Date.class,  
            new CustomDateEditor(dateFormat, true)); 
        binder.registerCustomEditor(String.class, new StringTrimmerEditor(false)); 
    } 

           
     
         
             
       
 
   
 

/**
     * 注册java.util.Date类型
     *
     * @param binder
     */
    @InitBinder
    public void initBinder(WebDataBinder binder) {
        DateFormat dateFormat = new SimpleDateFormat(AppDateUtils.yyyyMMdd);
        binder.registerCustomEditor(java.util.Date.class, new CustomDateEditor(dateFormat, true));
    }

你可能感兴趣的:(date,spring,initbinder)