javaWeb开发struts 自定义类型转换器

来源:互联网 发布:linux查看根目录命令 编辑:程序博客网 时间:2024/05/02 04:19

一、自定义类型转换器

1.编写一个类继承一个com.opensymphony.xwork2.conversion.impl.DefaultTypeConverter

2.编写方法覆盖掉public Object convertValue(Map<String, Object> context, Object value,Class toType)

                        context:

                        value:传入的对象值,用户输入的都是字符串,且它是一个String数组;

                        toType:目标类型;

                      public class DateConvertor extends DefaultTypeConverter {
                           /*
                             context:ognl表达式的上下文
                            value:用户输入的值( 保存数据时)或者模型中的属性。用户输入的值是String数组
                                toType:目标类型
                         */
                      @Override
                      public Object convertValue(Map<String, Object> context, Object value,
                       Class toType) {
                           DateFormat df = new SimpleDateFormat("yyyy/MM/dd");
                       if(toType==Date.class){
                             //2013/05/31----->java.util.Date 保存数据时
                             String strValue = ((String[])value)[0];
                           try {
                                  return df.parse(strValue);
                               } catch (ParseException e) {
                                         throw new RuntimeException(e);
                               }
                       }else{
                                 //java.util.Date----->2013/05/31 获取数据时
                                Date dValue = (Date)value;
                                  return df.format(dValue);
                            }
                   }
             }
    3、注册类型转换器
        3.1局部类型转换器:只对当前的Action有效
        具体做法:在动作类相同的包中,建立一个名称是“动作类名-conversion.properties”的配置文件,(DepartmentAction-conversion.properties)
            文件中增加以下内容:要验证的字段=验证器的类全名
                    birthday=cn.ecit.xtcrm.utils.convertor.DateConvertor
        3.2全局类型转换器:对所有的Action都有效
        具体做法:在WEB-INF/classes目录下,建立一个名称为"xwork-conversion.properties"的配置文件,
            文件中增加以下内容:目标类型全名=验证器的类全名

                    java.util.Date=cn.ecit.xtcrm.utils.convertor.DateConvertor
        
        
        
    注意:如果转换失败,Struts2框架会寻找name=input的结果页面,

0 0