由于Struts不能完成字符串到应用类型的转换,所以需要自定义
自定义类型转换器必须实现ongl.TypeConverter
配置类型转换器的两种方式:
1.基于字段的配置
在字段所在的Model(Action或JavaBean)的包下,新建一个ModelClassName-converter.properties
在该文件中输入键值对:fieldName=类型转换器类名
第一次使用转换器时创建实例
**类型转换器是单例的
2.基于类型的配置
在src下新建xwork-conversion.properties
待转换的类型=类型转换器的全类名
第一次加载时创建实例
自定义类型转换器必须实现ongl.TypeConverter
配置类型转换器的两种方式:
1.基于字段的配置
在字段所在的Model(Action或JavaBean)的包下,新建一个ModelClassName-converter.properties
在该文件中输入键值对:fieldName=类型转换器类名
第一次使用转换器时创建实例
**类型转换器是单例的
2.基于类型的配置
在src下新建xwork-conversion.properties
待转换的类型=类型转换器的全类名
第一次加载时创建实例
**类型转换器不是单例的
=========================================
DateConverter
package com.app;
import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Map;
import javax.servlet.ServletContext;
import org.apache.struts2.ServletActionContext;
import org.apache.struts2.util.StrutsTypeConverter;
public class DateConverter extends StrutsTypeConverter {
private DateFormat dateFormat;
public DateConverter(){
System.out.println("DateConverter......");
}
public DateFormat getDateFormat(){
if(dateFormat == null){
//获取当前WEB应用的初始化参数 pattern
ServletContext servletContext = ServletActionContext.getServletContext();
System.out.println(servletContext);
String pattern = servletContext.getInitParameter("pattern");
dateFormat = new SimpleDateFormat(pattern);
}
return dateFormat;
}
@Override
public Object convertFromString(Map context, String[] values, Class toClass) {
// TODO Auto-generated method stub
System.out.println("convertFromString...");
if(toClass == Date.class){
if(values !=null && values.length >0){
String value = values[0];
try {
return getDateFormat().parseObject(value);
} catch (ParseException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
return values;
}
@Override
public String convertToString(Map context, Object o) {
// TODO Auto-generated method stub
System.out.println("convertToString...");
if(o instanceof Date){
Date date = (Date) o;
return getDateFormat().format(date);
}
//若转换失败返回 null
return null;
}
}