`
昔雪似花
  • 浏览: 204190 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

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,
<form:errors path="time" cssClass="error"/>处输出错误:
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)); 
    } 

<!-- property editor -->           
    <bean class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter"> 
        <property name="webBindingInitializer"> 
            <bean class="com.morris.MyBindingInitializer"/> 
        </property> 
    </bean> 

/**
     * 注册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));
    }

分享到:
评论

相关推荐

    springmvc类型转换.md

    import org.springframework.web.bind.support.WebBindingInitializer; import org.springframework.web.servlet.mvc.method.annotation.InitBinderMethod; public class MyController { @InitBinder public ...

    spring技术

    在这个类中,我们可以通过`initBinder`方法注册自定义的日期编辑器,如`CustomDateEditor`,将日期格式设置为"yyyy-MM-dd",并设置lenient属性为false以确保日期解析的严格性。 此外,如果需要处理时间戳...

    spring中的自定义属性编辑器

    例如,如果你有一个bean属性是`Date`类型,但你在配置中提供了一个字符串,Spring会使用`CustomDateEditor`将字符串转换为`Date`对象。 4. **扩展编辑器**:有时,你可能希望对默认的属性编辑器进行扩展,而不是...

    spring自定义编辑器

    public class CustomDateEditor extends PropertyEditorSupport { private SimpleDateFormat dateFormat; public CustomDateEditor() { this.dateFormat = new SimpleDateFormat("yyyy-MM-dd"); } @Override...

    SpringMVC日期类型接收空值异常问题解决方法

    `CustomDateEditor` 类的构造函数需要两个参数,第一个参数是日期格式,第二个参数是一个布尔值,表示是否允许将空字符串转换为 Date 类型。 在 `CustomDateEditor` 类的源代码中,我们可以看到其构造函数的定义: ...

    SpringMVC的@InitBinder参数转换代码实例

    例如,在下面的示例代码中,我们使用@InitBinder注解来指定要绑定的参数param和date,并注册了StringTrimmerEditor和CustomDateEditor这两个编辑器。 ```java @Controller @RequestMapping("/index") public class ...

    SSM自定义参数绑定

    在这个例子中,`CustomDateEditor`是`PropertyEditorSupport`的子类,用于将字符串转换为日期。 除了自定义参数解析器和`@InitBinder`,SpringMVC还支持使用`@ModelAttribute`注解进行更复杂的参数绑定。`@...

    SpringMVC 传日期参数到后台的实例讲解

    CustomDateEditor dateEditor = new CustomDateEditor(fmt, true); binder.registerCustomEditor(Date.class, dateEditor); } ``` 在上面的代码中,我们使用了 `@InitBinder` 注解来将日期参数传递给后台。在 `...

    详解SpringMVC注解@initbinder解决类型转换问题

    SpringMVC 在绑定表单之前,都会先注册这些编辑器,Spring 自己提供了大量的实现类,诸如 CustomDateEditor、CustomBooleanEditor、CustomNumberEditor 等许多,基本上够用。使用时候调用 WebDataBinder 的 ...

    解决springmvc关于前台日期作为实体类对象参数类型转换错误的问题

    binder.registerCustomEditor(Date.class, new CustomDateEditor(new SimpleDateFormat("yyyy-MM-dd"), true)); } } ``` 在上面的解决方案中,我们可以看到,解决SpringMVC关于前台日期作为实体类对象参数类型...

    springmvc中进行数据保存以及日期参数的保存过程解析

    binder.registerCustomEditor(Date.class, new CustomDateEditor(new SimpleDateFormat("yyyy-MM-dd"), true)); } ``` 这段代码会在每次请求开始时执行,注册一个自定义编辑器,使得所有以`Date`类型接收的参数...

    Springside4 学习整理

    在实际应用中,可能会遇到类型转换的问题,如将用户输入的日期字符串转换为 Date 类型,这时可以使用 @InitBinder 注解和 CustomDateEditor 类进行定制化处理。 - Spring Data JPA:简化了 ORM(对象关系映射),...

    Spring注入Date类型的三种方法总结

    这种方式是通过自定义`CustomDateEditor`类,继承Spring的`PropertyEditorSupport`,并重写`setAsText`方法,以处理日期字符串到`Date`的转换。首先创建一个`dateEditor` Bean,配置`CustomDateEditor`,并传入`...

    通用后台管理系统(ExtJS 5.1 + Hibernate 4.1.7 + Spring MVC 3.2.8).docx

    CustomDateEditor解决了Spring MVC中日期参数处理的问题。ExceptionCode和服务层的ServiceException协同处理异常信息。CacheFactory则负责Ehcache的管理和操作。 此外,文档还提到了一些具体问题的解决方案,如...

    Java实现在线考试系统与设计(学生功能)

    在系统实现中,我们还使用了一些其他的技术,例如使用了SimpleDateFormat类来格式化日期,使用了CustomDateEditor类来处理日期编辑,使用了HttpSession对象来存储用户的会话信息等。 本文主要介绍了Java实现在线...

    Spring学习笔记

    通过`CustomDateEditor`,我们指定了日期的格式为`yyyy-MM-dd`,并且不允许用户输入的时间为空。 #### 四、数据库连接池设置 在实际项目中,数据库连接池是非常重要的,它可以显著提高应用性能。Spring支持多种...

    springmvc接收参数为日期类型

    在上述代码中,`CustomDateEditor`是一个自定义的日期编辑器,它会按照指定的`SimpleDateFormat`格式解析日期字符串。 2. **使用`@DateTimeFormat`注解** 如果你只是需要处理某个特定方法的日期参数,可以使用...

    通用后台管理系统(ExtJS 4.2+Hibernate 4.1.7+Spring MVC 3.2.8).pdf

    5. CustomDateEditor:处理日期参数并注册到控制器里,否则 Spring MVC 的参数处理将出错。 6. ExceptionCode、ServiceException:处理异常信息。 7. CacheFactory:处理 Ehcache 二级缓存。 8. 还有其他很多工具...

    spring3.0注解

    binder.registerCustomEditor(Date.class, new CustomDateEditor(format, false)); } } ``` 5. **面向切面编程(AOP)** Spring 3.0的AOP支持允许开发者定义切面,实现如日志记录、权限控制等功能。使用@...

    spring数据格式转换

    此外,Spring还支持对复杂类型的转换,如`CustomCollectionEditor`用于`String`到`Collection`,`CustomDateEditor`用于`String`到`java.util.Date`,以及`URLEditor`用于`String`到`URL`的转换。 在处理JavaBean...

Global site tag (gtag.js) - Google Analytics