我是靠谱客的博主 整齐小刺猬,最近开发中收集的这篇文章主要介绍SpringMVC中@InitBinder注解介绍与使用,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

@InitBinder注解的方法可以对WebDataBinder初始化。webDataBinder是用于表单到方法的数据绑定的!

@InitBinder只在@Controller中注解方法来为这个控制器注册一个绑定器初始化方法,方法只对本控制器有效
一般用做BaseController对数据进行设置

  • WebDataBinder中有很多方法可以对数据绑定进行具体的设置:比如我们设置name属性为非绑定属性(也可以设置绑定值setAllowedFields):
@InitBinder
    public void initBinder(WebDataBinder binder) {
        binder.setDisallowedFields("name");

该字段在表单提交时就不会提交上去。

对页面数据进行解析绑定

在使用SpingMVC框架的项目中,经常会遇到页面某些数据类型是Date、Integer、Double等的数据要绑定到控制器的实体,或者控制器需要接受这些数据,如果这类数据类型不做处理的话将无法绑定。
以时间为例先看没有加@Initbinder的效果
Controller层

@Controller
public class MyController {
    @RequestMapping("baseTest")
    @ResponseBody
    public String baseTest(Date date){
        System.out.println("------"+date);
        return String.valueOf(date);
    }
}

页面结果:由于语法格式有误,服务器无法理解此请求
在这里插入图片描述

以时间为例有两种实现方法

@Controller
public class MyController extends BaseController {
    @RequestMapping("baseTest")
    @ResponseBody
    public String baseTest(Date date){
        System.out.println("------"+date);
        return String.valueOf(date);
    }
}

1、使用Spring提供的实现类CustomDateEditor

public class BaseController {

    @InitBinder
    protected void initBinder(WebDataBinder binder){
        SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
        binder.registerCustomEditor(Date.class,new CustomDateEditor(dateFormat, true));
    }

2、自定义实现类MyDateEditor

public class BaseController {

    @InitBinder
    protected void initBinder(WebDataBinder binder){
        binder.registerCustomEditor(Date.class,new MyDateEditor());
    }

    private class MyDateEditor extends PropertyEditorSupport{
        @Override
        public void setAsText(String text) throws IllegalArgumentException {
            SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
            Date date = null;
            try {
                date = format.parse(text);
            } catch (ParseException e) {
                format = new SimpleDateFormat("yyyy-MM-dd");
                try {
                    date = format.parse(text);
                } catch (ParseException e1) {
                }
            }
            setValue(date);
        }
    }
}

运行结果
在这里插入图片描述
还有CustomBooleanEditor、CustomNumberEditor就没有一一列举了。

最后

以上就是整齐小刺猬为你收集整理的SpringMVC中@InitBinder注解介绍与使用的全部内容,希望文章能够帮你解决SpringMVC中@InitBinder注解介绍与使用所遇到的程序开发问题。

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

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

评论列表共有 0 条评论

立即
投稿
返回
顶部