Spring MVC(学习笔记六)控制器的注解(五) -之全局初始化绑定操作(@InitBinder)
2018-02-03 09:15
405 查看
全局初始化绑定操作
@InitBinder 定义初始化的方法:不能有返回值,它必须盛名为void。WebDataBinder:是用来绑定请求参数到指定的属性编辑器.由于前台传到controller里的值是String类型的,当往Model里Set这个值的时候,如果set的这个属性是个对象,Spring就会去找到对应的editor进行转换,然后再SET进去。
首先在HandlerMethodArgumentController(访问路径:/hmac)类编写一个处理方法:
@PostMapping(value = "sib") public String setInitBinder(Date time){ System.out.println(time);//输出的结果:Fri Nov 11 00:00:00 CST 2011 return "index"; }
再定义一个全局处理的类:GlobalControllerAdiviceController:
@ControllerAdvice public class GlobalControllerAdiviceController { //初始化绑定操作【全局形式】 @InitBinder public void dataBind(WebDataBinder binder){ //设置的格式 SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd"); dateFormat.setLenient(false); ///給指定类型注册类型转换器操作 binder.registerCustomEditor(Date.class, new CustomDateEditor(dateFormat, false)); } }
最后在编写index.jsp页面:
<h1>binder</h1> <form action="${pageContext.request.contextPath}/hmac/sib" method="post"> <input type="text" name="time" value="2011-11-11"> <input type="submit" value="sub"> </form>
自定义转换配置
1. 定义转换类 (继承:PropertyEditorSupport)setAsText :设置文本操作
setValue: 设置值
//包名:editor public class UserPropertyEditor extends PropertyEditorSupport { @Override public void setAsText(String text) throws IllegalArgumentException { if (!StringUtils.isEmpty(text)){ //获取内容,并进行转换操作 String[] userText=text.split(":"); User user=new User(); user.setId(Integer.parseInt(userText[0])); user.setName(userText[1]); user.setPwd(userText[2]); //设置值 setValue(user); }else{ //... } } }
2. 注册转换操作:全局处理类:GlobalControllerAdiviceController
@ControllerAdvice public class GlobalControllerAdiviceController { /** * 初始化绑定操作【全局形式】 * @ControllerAdvice(对controller请求进行处理操作(@ReuqestMapping))+@InitBinder(自定义绑定操作)+WebDataBinder(web数据绑定对象) */ @InitBinder public void dataBind(WebDataBinder binder){ //注册自定义转换类型 binder.registerCustomEditor(User.class,new UserPropertyEditor()); } }
编写index.jsp页面:
<h1>customer binder</h1> <form action="${pageContext.request.contextPath}/hmac/scb" method="post"> <input type="text" name="us" value="1001:mj:test"> <input type="submit" value="sub"> </form>
我debug调试的结果:
相关文章推荐
- Spring MVC(学习笔记五)--控制器的注解(四) -之全局异常处理操作
- Spring MVC(学习笔记七)控制器的注解(六) -之处理跨域操作(@CrossOrigin)
- 【笔记】Spring MVC学习指南(四)基于注解的控制器
- (笔记)Spring MVC学习指南_基于注解的控制器
- Spring MVC(学习笔记四)控制器的注解(三) -之处理方法的返回值配置
- Linux 学习笔记1 --- kernel初始化以及module_init(x)解析
- springMVC学习笔记六(注解方式实现控制器)
- Android Binder 机制初步学习 笔记(二)—— Binder 设备基本操作实现
- spring mvc使用@InitBinder 标签对表单数据绑定
- spring mvc使用@InitBinder 标签对表单数据绑定
- SilverLight学习笔记--Silverligh之如何把InitParams 初始化参数从WebPage传递到Silverlight
- spring mvc使用@InitBinder 标签对表单数据绑定
- 类型转换器(InitBinder 初始化绑定器)
- Spring MVC 学习笔记10 —— 实现简单的用户管理(4.3)用户登录显示全局异常信息
- jQuery学习笔记 —— 2. DOM操作和 3. 事件绑定
- SPRING MVC注解 学习笔记
- springmvc学习笔记(12)-springmvc注解开发之包装类型參数绑定
- spring mvc使用@InitBinder标签对表单数据绑定的方法
- Linux学习笔记一、初始操作,Ctrl+Alt+Fn,startx,exit,date,cal,bc,Ctrl+c,Ctrl+d,who,netstat -a,ps -aux,sync,init
- 关于Spring MVC注解 @Transactional 事务标签 @InitBinder 标签