@InitBinder注解使用

来源:互联网 发布:电子画板手绘软件 编辑:程序博客网 时间:2024/05/24 06:07

1. @InitBinder 是什么

@InitBinder用于在@Controller中标注于方法,表示为当前控制器注册一个属性编辑器或者其他,只对当前的Controller有效。

用途一: 类型转换

@RequestMapping("test")@Controllerpublic class TestController {    @InitBinder    public     void InitBinder(WebDataBinder binder){        DateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");        CustomDateEditor dateEditor = new CustomDateEditor(df, true);        binder.registerCustomEditor(Date.class,dateEditor);    }    @RequestMapping(value="/param",method=RequestMethod.GET)    @ResponseBody    public Map<String,Object> getFormatData(Date date) throws ParseException{        Map<String,Object> map = new HashMap<String, Object>();        map.put("name", "zhangsan");        map.put("age", 22);        map.put("date",date);        return map;    }}

用途二: 参数绑定

jsp页面

<form action="/testBean" method="post">    name: <input type="text" name="u.name"> <br>    age: <input type="text" name="u.age"> <br>    name: <input type="text" name="s.name"> <br>    age: <input type="text" name="s.age"> <br>    <input type="submit"></form>

Controller

    @InitBinder("user")    public void init1(WebDataBinder binder) {        binder.setFieldDefaultPrefix("u.");    }    @InitBinder("stu")    public void init2(WebDataBinder binder) {        binder.setFieldDefaultPrefix("s.");    }    @RequestMapping("/testBean")    public ModelAndView testBean(User user, @ModelAttribute("stu") Student stu) {        System.out.println(stu);        System.out.println(user);        String viewName = "success";        ModelAndView modelAndView = new ModelAndView(viewName);        modelAndView.addObject("user", user);        modelAndView.addObject("student", stu);        return modelAndView;    }

@InitBinder("user")括号内的参数为类的首字母小写(默认命名规则),也可以用@ModelAttribute("stu")做限定.