什么是属性编辑器,作用?
spring已经有内置的属性编辑器,它的作用是 spring配置文件中的字符串转换成相应的对象进行注入,
我们可以根据需求自己定义属性编辑器
什么时候需要自定义属性编辑器 某些时候需要自定义,spring内置的属性编辑器,不能把字符串转换成相应的对象。
如注入的日期字符串,不能转换成日期类型注入对象。就需要自定义属性编辑器。
如何定义属性编辑器? * 继承PropertyEditorSupport类,覆写setAsText()方法,参见:UtilDatePropertyEditor.java
* 将属性编辑器注册到spring中,参考如下:
<!--第一种,利用spring的注入把 日期样式也作为一个参数,更加灵活-->
<bean id="customEditorConfigurer" class="org.springframework.beans.factory.config.CustomEditorConfigurer">
2 <property name="customEditors">
3 <map>
4 <entry key="java.util.Date">
5 <bean class="com.bjsxt.spring.UtilDatePropertyEditor">
6 <property name="format" value="yyyy-MM-dd"/>
7 </bean>
8 </entry>
9 </map>
10 </property>
11 </bean>
12 <!--第二种 -->
13 <!--
14 <bean id="utilDatePropertyEditor" class="com.bjsxt.spring.UtilDatePropertyEditor"></bean>
15 -->
java部分代码:
1 /**
2 * java.util.Date属性编辑器
3 * @author Administrator
4 *
5 */
6 public class UtilDatePropertyEditor extends PropertyEditorSupport {
7
8 private String format="yyyy-MM-dd";
9
10 @Override
11 public void setAsText(String text) throws IllegalArgumentException {
12 System.out.println("UtilDatePropertyEditor.saveAsText() -- text=" + text);
13
14 SimpleDateFormat sdf = new SimpleDateFormat(format);
15 try {
16 Date d = sdf.parse(text);
17 this.setValue(d);
18 } catch (ParseException e) {
19 e.printStackTrace();
20 }
21 }
22
23 public void setFormat(String format) {
24 this.format = format;
25 }
26
27 }
28
29