Spring中的WebDataBinder
来源:互联网 发布:redis安装 windows 编辑:程序博客网 时间:2024/06/14 16:03
Controller方法的参数类型可以是基本类型,也可以是封装后的普通Java类型。若这个普通Java类型没有声明任何注解,则意味着它的每一个属性都需要到Request中去查找对应的请求参数。众所周知,无论客户端传入的是什么类型的请求参数,最终都要以字节的形式传给服务端。而服务端通过Request的getParameter方法取到的参数也都是字符串形式的结果。所以,需要有一个把字符串形式的参数转换成服务端真正需要的类型的转换工具,在spring中这个转换工具为WebDataBinder。
原理图:
在我们学习servlet的时候我们知道有一个方法叫做:request.getParameter("paramName"),它返回的是一个String类型,但是如果一切都是这样子我们开发程序的时候就会显得特别麻烦,因为java引入了对象的概念,我们往往把一个表单的数据封装在一个业务中的一个javaBean对象里面,javaBean对象里面的属性会有不同类型,如:int,double,byte等等。所以需要几个东西来把String转化成服务端真正的类型,为了解决这个问题,springmvc引入了WebDataBinder。
众所周知spring可以自动将request中的数据对应到对象的每个property,会自动的bind 一些simple data (Strings, int, float, etc.) 对应到 你所要求的Object中,可是如果面对复杂的对象,那就需要借助于PropertyEditor 来帮助你完成复杂对象的对应关系,这个借口提供了两个方法,将一个property 转成string getAsText(), 另外一个方法是将string类型的值转成property对应的类型。使用起来也很简单,来个例子:
贴心的spring,提供了一种重载的方法。 for example:
- @InitBinder
- public void bindingPreparation(WebDataBinder binder) {
- DateFormat dateFormat1 = new SimpleDateFormat("d-MM-yyyy");
- CustomDateEditor orderDateEditor = new CustomDateEditor(dateFormat1, true);
- DateFormat dateFormat2 = new SimpleDateFormat("MMM d, YYYY");
- CustomDateEditor shipDateEditor = new CustomDateEditor(dateFormat2, true);
- binder.registerCustomEditor(Date.class, "orderDate", orderDateEditor);
- binder.registerCustomEditor(Date.class, "shipDate", shipDateEditor);
- }
- @InitBinder
- public void bindingPreparation(WebDataBinder binder) {
- DateFormat dateFormat = new SimpleDateFormat("MMM d, YYYY");
- CustomDateEditor orderDateEditor = new CustomDateEditor(dateFormat, true);
- binder.registerCustomEditor(Date.class, orderDateEditor);
其实只要为每个变量绑定一个不同的Editor就可以了,对于不同的变量进行不同的处理。这样就能够方便的完成request 和 property 之间的binder了。
- 说说Spring中的WebDataBinder
- 说说Spring中的WebDataBinder
- Spring中的WebDataBinder
- WebDataBinder
- spring mvc表单数据绑定,对于基本类型和日期的处理WebDataBinder
- spring mvc表单数据绑定,对于基本类型和日期的处理WebDataBinder
- SpringMVC中WebDataBinder的应用及原理
- [Spring]Spring中的事务管理
- Spring 中的事务处理
- Spring中的ProxyFactoryBean
- Spring中的getBean
- Spring中的Bean
- spring中的问题
- Spring 中的 AOP
- Spring中的名词概念
- Spring中的WebApplicationContext
- Spring中的数据绑定
- Spring 中的 AOP
- 关于sessionStorage与localStorage的使用场景区别
- Lua_高级特性_014
- Python连接DB2数据库基本
- iOS 各种学习资源demo链接汇总 (包含刷新,动画,图表,对话框等效果)
- 201. Bitwise AND of Numbers Range
- Spring中的WebDataBinder
- 面试问题mybatis #和$的区别
- Android 后台部署发布新插件
- 【JAVA300】56-60 笔记
- 多线程之join,interrupt(三)
- sqlserver 2016查询创建表的名称和时间 和阻塞,死锁有关的说明
- Android百科全书目录(第六期)(Android版本适配问题)
- sparkStreaming连接数据库(mysql)
- Spring动态代理