概述
@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注解介绍与使用所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复