我是靠谱客的博主 无情大象,最近开发中收集的这篇文章主要介绍InitBinder,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

Spring可以自动封装Bean,也就是说可以前台通过SpringMVC传递过来的属性值会自动对应到对象中的属性并封装成javaBean,但是只能是基本数据类型(int,String等)。如果传递过来的是特殊对象,则需要手动进行封装。

Spring提供了@initBinder(初始化绑定封装)注解和WebDataBinder工具。用户只需要向WebDataBinder注册自己需要的类型的属性编辑器即可具体的做法是,在Controller中声明一个InitBinder方法,方法中利用WebDataBinder将自己实现的或者spring自带的PropertyEditor进行注册。

如可以使用InitBinder来处理Date类型的参数

@Controller    
public class MyFormController {     

    @InitBinder    
    public void initBinder(WebDataBinder binder) {     

        SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");     

        dateFormat.setLenient(false);     

        binder.registerCustomEditor(Date.class, new CustomDateEditor(dateFormat, false));     

    }     
    // ...     

}    

WebDataBinder是用来绑定请求参数到指定的属性编辑器,可以继承WebBindingInitializer来实现一个全部controller共享的dataBiner    

@Component    
public class CommonBindingInitializer implements WebBindingInitializer {     

    public void initBinder(WebDataBinder binder, WebRequest request) {     

            SimpleDateFormat dateFormat = new SimpleDateFormat(ERPUtil.ISO_DATE_MASK);     
    
            dateFormat.setLenient(false);     

            binder.registerCustomEditor(Date.class, new CustomDateEditor(dateFormat, true));     

            binder.registerCustomEditor(String.class, new StringTrimmerEditor(false));     

    }     

}  

注意:controller中定义的initbinder只能在该controller 中使用。因此可以将initbinder定义在baseController中,这样其他继承了baseControllercontroller都能使用这个initbinder

最后

以上就是无情大象为你收集整理的InitBinder的全部内容,希望文章能够帮你解决InitBinder所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(31)

评论列表共有 0 条评论

立即
投稿
返回
顶部