8、类型转换器

struts2有两种"类型转换器":局部类型转换器全部类型转换器;
 
     局部类型转换器使用方法如下:
  1. 首先继承: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文件,ActionClassNameAction的类名,后面的-conversion.properties是固定写法,对于本例而言,文件的名称应为HelloWorldAction-conversion.properties 。在properties文件中的内容为:

属性名称=类型转换器的全类名

对于本例而言, HelloWorldAction-conversion.properties文件中的内容为:

   birthday=cn.itcast.type.converter.DateConverter

3. 运行结果如下:
    




posted @ 2014-04-06 19:06  zmpandzmp  阅读(108)  评论(0编辑  收藏  举报