spring mvc 自定义编辑器
起始知识:
Java标准的PropertyEditor的核心功能是将一个字符串转换为一个Java对象,以便根据界面的输入或配置文件中的配置字符串构造出一个JVM内部的java对象。
如何注册自定义的属性编辑器:
1、实现PropertyEditor接口或者继承PropertyEditorSupport类
2、在Spring上下文中声明一个org.springframework.beans.factory.config.CustomEditorConfigurer的bean
<!--将bean1中的Date赋值2008-08-15,spring会认为2008-08-15是String,无法转换成Date,会报错!--> <bean id="bean1" class="com.bjsxt.spring.Bean1">
<property name="dateValue">
<value>2008-08-15</value>
</property>
</bean>
<!-- 于是定义属性编辑器 -->
<bean id="customEditorConfigurer" class="org.springframework.beans.factory.config.CustomEditorConfigurer">
<property name="customEditors">
<map>
<entry key="java.util.Date">
<bean class="com.bjsxt.spring.UtilDatePropertyEditor">
<!--干脆把format也注入,灵活处理格式-->
<property name="format" value="yyyy-MM-dd"/>
</bean>
</entry>
</map>
</property>
</bean>
但是Java原生的PropertyEditory存在一下不足:
1、只能用于字符串和java对象的抓换,不适用于任意两个Java类型之间的转换。
2、对源对象和目标对象上下文信息(如注解,所在宿主类的结构等)不敏感,在类型转换时不能利用这些上下文信息实施高级转换逻辑。
有鉴于此,Spring 3.0核心模型中添加了一个通用的类型转换模块,类型转换模块位于org.springframework.core.convert中,Spring希望用这个类型转换体系替换Java标准的PropertyEditor。但由于历史原因,会同时支持两者。
ConversionService
它是Spring类型转换体系中核心接口,位于org.springframework.core.convert中,也是唯一一个接口。
可以利用ConversionServiceFactorybean在spring上下文中定义一个ConversionService。该factorybean提供了大量内置的转换器,同时也支持自定义转换器。
自定义转换器,可选择实现三者中任一种接口:
- Converter<S,T>
- GenericConverter
- ConverterFactory
Spring mvc在支持新转换器框架同时,也支持JavaBeans的PropertyEditor,可以在控制器中使用@InitBinder添加自定义的编辑器,也可以通过WebBindingInitializer装配在全局范围内使用的编辑器。
加载顺序
那么,对于同一个类型对象来说,如果三个地方均配置了,该以哪个为主:
1、查询通过@Initbinder装配的自定义编辑器。
2、查询通过ConversionService装配的自定义转换器。
3、查询通过WebBindingInitializer装配的自定义编辑器。
spring mvc 自定义编辑器的更多相关文章
- Spring MVC自定义统一异常处理类,并且在控制台中输出错误日志
在使用SimpleMappingExceptionResolver实现统一异常处理后(参考Spring MVC的异常统一处理方法), 发现出现异常时,log4j无法在控制台输出错误日志.因此需要自定义 ...
- spring mvc 自定义Handlermapping
上次大概写了个可以解决velocity 多视图的东西. 但是实际运用过程中又到处找了些资料看了下.这里 小计下: DispatcherServlet解析过程: ..1..HandlerMapping. ...
- spring mvc 自定义转换器
<!-- 注册转化器 --> <mvc:annotation-driven conversion-service="conversionService" /> ...
- spring mvc自定义注解--登录时密码加密注解
1,定义注解名称接口 /** * 使用该注解不用再MD5转换了 * * @author adonis * */ @Target(ElementType.PARAMETER) @Retention(Re ...
- Spring MVC 自定义类型转换器
新建一个自定义转换器 import org.springframework.core.convert.converter.Converter; import org.springframework.s ...
- spring mvc --自定义converse
在MVC中我们可以很轻松的根据项目需求进行必要的信息转换,如设置默认的日期格式,自定义String类型的格式等等... 配置中我们需要自定义converseService: <bean id=& ...
- Spring MVC自定义403,404,500状态码返回页面
代码 HTTP状态码干货:http://tool.oschina.net/commons?type=5 import org.springframework.boot.web.servlet.erro ...
- spring mvc自定义注解--访问时验证
作用:在访问controller的方法时,判断用户是否是登陆状态. step1:定义注解 import java.lang.annotation.ElementType; import java.la ...
- spring mvc 自定义handler不拦截静态资源
处理静态资源的handler和处理Controller请求中的handler不同,对应的Interceptor也不同 查找对应handler是在DispatcherServlet中 因此一些自定义的I ...
随机推荐
- 对于最近的一些日常总结by520(17.10.18)
---天天考试,各种题型都有,学到了很多新的知识,也发现了自己的许多不足---1.首先,自己的搜索需要加强,特别是广搜,10.18的T1裸广搜没有做对.2.数学的思维和一些逻辑问题需要加强,然后就是要 ...
- struts2(s2-052)远程命令执行漏洞复现
漏洞描述: 2017年9月5日,Apache Struts发布最新安全公告,Apache Struts2的REST插件存在远程代码执行的高危漏洞,该漏洞由lgtm.com的安全研究员汇报,漏洞编号为C ...
- bzoj2621: [Usaco2012 Mar]Cows in a Skyscraper(状压DP)
第一眼是3^n*n的做法...然而并不可行T T 后来发现对于奶牛的一个状态i,最优情况下剩下那个可以装奶牛的电梯剩下的可用重量是一定的,于是我们设f[i]表示奶牛状态为i的最小电梯数,g[i]为奶牛 ...
- BZOJ1002【FJOI2007】轮状病毒
1002: [FJOI2007]轮状病毒 Time Limit: 1 Sec Memory Limit: 162 MBSubmit: 6917 Solved: 3777[Submit][Statu ...
- Project Euler 453 Lattice Quadrilaterals 困难的计数问题
这是一道很综合的计数问题,对于思维的全面性,解法的过渡性,代码能力,细节处理,计数问题中的各种算法,像gcd.容斥.类欧几里德算法都有考察.在省选模拟赛中做到了这题,然而数据范围是n,m小于等于100 ...
- Xml中SelectSingleNode方法,xpath查找某节点用法
Xml中SelectSingleNode方法,xpath查找某节点用法 最常见的XML数据类型有:Element, Attribute,Comment, Text. Element, 指形如<N ...
- Codeforces 833B The Bakery dp线段树
B. The Bakery time limit per test 2.5 seconds memory limit per test 256 megabytes input standard inp ...
- Android_UiAutomator(安卓UI自动化)环境搭建
一.配置JDK环境变量 1.新建系统变量JAVA_HOME,然后输入引号内的内容(JDK安装目录) "C:\Program Files\Java\jdk1.8.0_51" ...
- scp 从本地往线上传文件
scp /home/wwwroot/default/tf_ment.sql root@IP:/home/wwwroot/default/
- 1.4 Matplotlib:绘图
sklearn实战-乳腺癌细胞数据挖掘 https://study.163.com/course/introduction.htm?courseId=1005269003&utm_campai ...