局部类型转换器使用方法如下:
- 首先继承:DefaultTypeConverter 类型转换器类,然后自己重写convertValue 方法,某日期转换器代码如下:
package cn.itcast.type.converter;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Map;
import com.opensymphony.xwork2.conversion.impl.DefaultTypeConverter;
public class DateConverter extends DefaultTypeConverter {
@Override
public Object convertValue(Map<String, Object> context, Object value,
Class toType) {
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyyMMdd");
try {
if (toType == Date.class) {
//requets.getPrameterValues()获取的,所以采用String[]数组形式,如复选框有多个值,
//因为struts是一个框架,所以要处理各种可能
String[] params = (String[]) value;
return simpleDateFormat.parse(params[0]);
} else if (toType == String.class) {
Date date = (Date) value;
return simpleDateFormat.format(date);
}
} catch(ParseException e) {
e.printStackTrace();
}
return super.convertValue(context, value, toType);
}
}
2. 在该Action下新建properties文件,命名规则如下:
在Action类所在的包下放置ActionClassName-conversion.properties文件,ActionClassName是Action的类名,后面的-conversion.properties是固定写法,对于本例而言,文件的名称应为HelloWorldAction-conversion.properties 。在properties文件中的内容为:
属性名称=类型转换器的全类名
对于本例而言, HelloWorldAction-conversion.properties文件中的内容为:
birthday=cn.itcast.type.converter.DateConverter
3. 运行结果如下: