测试ActionForm注册类型自动转换
* 一般的数据类型都可以自动进行转换;
* boolean:yes,1,on,true都会转换成True类型,而且忽略大小写,其他清空转换成false
* java.sql.Date 默认的转换格式是 yyyy-MM-dd;
* java.util.Date 默认不可以转换;
* 自定义转换器的实现步骤:
1. 定义一个实现了Converter接口的类,并且实现convert方法;
2. 定义一个servlet来注册转换器,注册转换器引用ConvertUtils类的静态方法register(转换器,转换类型);
* ConvertUtils.register(new ConvertTestAction(), java.util.Date.class);
3. 配置servlet时注意配上这个<load-on-startup>5</load-on-startup>值要大于0,因为这个servlet要求在tomcat启动时初始化;
4. 第二种方法注册转换器通过实现PlugIn接口,在struts-config.xml中配置上<plug-in className="com.gzbb.dynaForm.action.ConvertTestPlus"></plug-in>
* 如果对应的Converter不明白,可以查看相应的类文件 org.apache.commons.beanutils.Converter;
org.apache.commons.beanutils.converters.*;
实现方法一:
在servlet初始化时注册
1. 实现org.apache.commons.beanutils.Converter接口,
@Override
public Object convert(Class type, Object value) {
System.out.println("UtilDateConvert.value="+value);
if(value==null){
return value;
}
if(value instanceof Date){
return value;
}
Date d=null;
if(value instanceof String){
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
try {
d = sdf.parse(value.toString());
} catch (ParseException e) {
e.printStackTrace();
}
}
return d;
}
2.写一个servlet注册转换器,并实现init()方法
@Override
public void init() throws ServletException {
//注册转换器
ConvertUtils.register(new UtilDateConvert(), Date.class);
}
3在web.xml中配合servlet
<servlet>
<servlet-name>UtilDateConverterInitWithervlet</servlet-name> <servlet-class>com.zsw.struts.UtilDateConverterInitWithervlet</servlet-class>
<!-- 使tomcat启动时初始化 -->
<load-on-startup>3</load-on-startup>
</servlet>
实现方法二:
使用PlugIn注册,
1.实现org.apache.commons.beanutils.Converter接口,
@Override
public Object convert(Class type, Object value) {
System.out.println("UtilDateConvert.value="+value);
if(value==null){
return value;
}
if(value instanceof Date){
return value;
}
Date d=null;
if(value instanceof String){
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
try {
d = sdf.parse(value.toString());
} catch (ParseException e) {
e.printStackTrace();
}
}
return d;
}
2.实现org.apache.struts.action.PlugIn接口。
@Override
public void init(ActionServlet arg0, ModuleConfig arg1)
throws ServletException {
//注册转换器
ConvertUtils.register(new UtilDateConvert(), Date.class);
}
3.在struts-config.xml中配置:
<plug-in className="com.zsw.struts.UtilDateConverterInitWithPlugin" />