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 ...
随机推荐
- jmeter之JDBC的使用
一.配置JDBC Request 1.添加需要的驱动jar包 使用不同的数据库,我们需要引入不同的jar包. 方式1:直接将jar包复制到jmeter的lib目录 mysql数据库:下载mysql- ...
- thusc2018酱油记
day-1 打点行囊,从学校出发去火车站 day0 在火车上一觉醒来便快到了北京,直接前往了宾馆安置 下午报道,一脸向往地第一次走入清华园,感觉十分的梦幻,心里一直喃喃:"希望以后也能经常在 ...
- HDU.1689 Just a Hook (线段树 区间替换 区间总和)
HDU.1689 Just a Hook (线段树 区间替换 区间总和) 题意分析 一开始叶子节点均为1,操作为将[L,R]区间全部替换成C,求总区间[1,N]和 线段树维护区间和 . 建树的时候初始 ...
- 【转载】 HDU 动态规划46题【只提供思路与状态转移方程】
1.Robberies 连接 :http://acm.hdu.edu.cn/showproblem.php?pid=2955 背包;第一次做的时候把概率当做背包(放大100000倍化为整数) ...
- Communications link failure;;The last packet sent successfully to the server was 0 milliseconds ago. The driver has not received any packets from the server.
Caused by: com.mysql.jdbc.exceptions.jdbc4.CommunicationsException: Communications link failure::The ...
- DevExpress Components16.2.6 Source Code 重编译教程
DevExpress 是一个比较有名的界面控件套件,提供了一系列优秀的界面控件.这篇文章将展示如何在拥有源代码的情况下,对 DevExpress 的程序集进行重新编译. 特别提示:重编译后,已安装好的 ...
- Ubuntu+NDK编译openssl
为了Android上使用libcurl且支持HTTPS协议,需要依赖openssl,因此先来了解一下如何编译OpenSSL1.编译ARM下的共享库(默认的)我使用的是guardianproject的o ...
- jni 找不到本地方法的实现
使用JNI开发,需要在java端声明本地方法,并在jni层实现本地方法. 有时运行项目时会先抛出异常:No implementation found for native xxx 然后直接挂掉:jav ...
- ios 虚拟机中文件下载路径
每个人mac上的路径会有不同,你可以打印出你文件下载存放的路径,然后拷贝一下,再单击桌面空白处,最上面的导航栏上有个“前往”,然后找到“前往文件夹”,粘贴一下,就可以找到了.
- Mybatis多参数及实体对象传递
在使用Mybatis的时候,经常会有各种各样的参数传递,不同类型,不同个数的参数. 先上个例子: public List<LifetouchRelease> findOfficeL ...