其他分享
首页 > 其他分享> > SpringMVC中@InitBinder注解介绍与使用

SpringMVC中@InitBinder注解介绍与使用

作者:互联网

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

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

@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);
        }
    }
}

运行结果
在这里插入图片描述

标签:InitBinder,SpringMVC,绑定,public,binder,date,注解,class
来源: https://blog.csdn.net/IManiy/article/details/86678742