`

Struts2.0属性转换器的作用说明

JSP 
阅读更多

Struts2的类型转换:
    一,局部类型转换(对某个action中的字段进行类型转换):
       1,写一个针对该action的要转换的字段的转换器,继承DefaultTypeConverter,重写convertValue方法
       2,在该action同一个目录下(同一包下)    新建一个xxx-conversion.properties文件。xxx是该action的类名
             规则:需要字段名=该字段的转换器
             如:  point=com.mengya.converter.PointConverter
                    ...(若还有其它的字段需要转化则继续写)
       3,这样写只能针对该action里的字段进行转换,其它的action不行,当然也可以配置其它的action的转换器
       4,对于字符串,数字,日期Struts2内置的类型转换。
      
    二,全局类型转换
        1,在src(即class下面)下面新建一个xwork-conversion.properties文件。
           规则:需要转换的类=该类的转换器
           如:com.mengya.util.Point=com.mengya.converter.PointConverter
      
    三,转换器:
        1,继承DefaultTypeConverter
           如:
            @Override
            public Object convertValue(Map context, Object value, Class toType) {
                // 要将字符串转换成point类
                if (toType == Point.class) {
                    String[] str = (String[]) value;
                    String paramValue = str[0];
                    String[] p = paramValue.split(",");
                    int x = Integer.parseInt(p[0]);
                    int y = Integer.parseInt(p[1]);
                    Point point = new Point();
                    point.setX(x);
                    point.setY(y);
                    return point;
                    // 要将point类转换成字符串
                } else if (toType == String.class) {
                    Point point = (Point) value;
                    return "X=" + point.getX() + " Y=" + point.getY();
                }
                return null;
            }
       
        2,继承StrutsTypeConverter
           如:
            // 从String转换成一个对象
            @Override
            public Object convertFromString(Map context, String[] value, Class toType) {
                String paramValue = value[0];// 取第一个元数,因为页面没有相同的字段名
                String[] params = paramValue.split(",");// 将","把用户所输入的字符串分隔开,即取得x与y的值
                int x=Integer.parseInt(params[0]);
                int y=Integer.parseInt(params[1]);
                Point p=new Point();
                p.setX(x);
                p.setY(y);
                return p;
            }
       
            // 从一个对象转换成一个字符串
            @Override
            public String convertToString(Map context, Object value) {
                Point p=(Point) value;
                return "[X="+p.getX()+",Y="+p.getY()+"]";
            }
    四,集合类型属性转换器,如action中有一个集合类型的属性也可以进行转换
        public class PointListConverter extends StrutsTypeConverter {
          // 从String[]转换成List<Point>
          @Override
          public Object convertFromString(Map context, String[] value, Class toType) {
            List<Point> pointList = new ArrayList<Point>();
            for (String str : value) {
              Point p = new Point();
              String[] s = str.split(",");
              p.setX(Integer.parseInt(s[0]));
              p.setY(Integer.parseInt(s[1]));
              pointList.add(p);
            }
            return pointList;
          }
       
          // 从List<Point>集合转换成Stirng
          @Override
          public String convertToString(Map context, Object toType) {
            List<Point> pointList = (List<Point>) toType;
            String value = "";
            for (int i = 0; i < pointList.size(); i++) {
              value = value + "[X=" + pointList.get(i).getX() + ",Y=" + pointList.get(i).getY() + "]";
            }
            return value;
          }
   
       }       
    五,说明:若action有一个point属性在jsp页面可以这样自己赋值:
        <s:textfield name="point.x" label="X"></s:textfield>
        <s:textfield name="point.y" label="Y"></s:textfield>             

2
0
分享到:
评论

相关推荐

    struts2.0.jar

    Struts 2.0框架中出现的许多特性旨在让Struts更容易使用: · 改进的设计: 与Struts 1相比,Struts 2的所有类都基于接口,核心接口独立于HTTP。这些API并不依赖服务器小程序API。 · 简化的Action: Struts 2 Action...

    JavaServer Faces 2.0完全参考手册(JSF2.0中文版).part1

    8.3.3 关联转换器与UI Component实例 8.3.4 转换器的生命周期 8.3.5 定制转换器 8.4 Faces验证系统 8.4.1 Long Range Validator 8.4.2 Double Range Validator 8.4.3 Length Validator 8.4.4 必需的工具Required ...

    JavaServer Faces 2.0完全参考手册(JSF2.0中文版) 1/2

    8.3.3 关联转换器与UI Component实例 8.3.4 转换器的生命周期 8.3.5 定制转换器 8.4 Faces验证系统 8.4.1 Long Range Validator 8.4.2 Double Range Validator 8.4.3 Length Validator 8.4.4 必需的工具Required ...

    JAVA程序开发大全---上半部分

    12.1.2 Struts 2.0与Struts 1.x框架的区别 215 12.2 MyEclipse创建基于Struts 2.0框架的项目 215 12.2.1 下载Struts 2.0开发包 216 12.2.2 创建Struts 2.0项目 216 12.2.3 配置Struts 2.0项目 217 12.2.4 创建Struts...

    Spring 2.0 开发参考手册

    19.3.1. 使用消息转换器 19.3.2. SessionCallback 和ProducerCallback 19.4. 接收消息 19.4.1. 同步接收 19.4.2. 异步接收 - 消息驱动的POJOs 19.4.3. SessionAwareMessageListener 接口 19.4.4. ...

    经典JAVA.EE企业应用实战.基于WEBLOGIC_JBOSS的JSF_EJB3_JPA整合开发.pdf

    3.4.4 绑定到Bean属性的转换器 159 3.5 使用验证器进行输入校验 161 3.5.1 输入校验概述 161 3.5.2 JSF内置校验器 162 3.5.3 校验失败后的错误消息 163 3.5.4 必填校验器 165 3.6 自定义校验器 166 3.6.1 开发自定义...

    struts2深入浅出(备java基础,javaweb,javaee,框架)

    Struts2框架介绍、工作原理与架构分析、6大配置文件分析使用通配符定义action、动态方法调用,ActionContext及ServletActionContext使用,模型驱动、属性驱动,默认转换器的介绍,中的表单校验,中的国际化,文件...

    java面试题

    72.8. struts2.0的常用标签 71 72.9. action是单实例还是多实例,为什么? 73 72.10. Struts的validate框架是如何验证的? 74 72.11. dispatchAction是用什么技术实现的? 74 72.12. struts2.0的mvc模式?与struts...

    spring chm文档

    5. 校验,数据绑定,BeanWrapper,与属性编辑器 5.1. 简介 5.2. 使用Spring的Validator接口进行校验 5.3. 从错误代码到错误信息 5.4. Bean处理和BeanWrapper 5.4.1. 设置和获取属性值以及嵌套属性 5.4.2. 内建...

    Spring API

    5. 校验,数据绑定,BeanWrapper,与属性编辑器 5.1. 简介 5.2. 使用Spring的Validator接口进行校验 5.3. 从错误代码到错误信息 5.4. Bean处理和BeanWrapper 5.4.1. 设置和获取属性值以及嵌套属性 5.4.2. 内建...

    Spring in Action(第二版 中文高清版).part2

    6.4.3 在Spring 2.0里声明事务 6.4.4 定义注释驱动事务 6.5 小结 第7章 保护Spring 7.1 Spring Security介绍 7.2 验证用户身份 7.2.1 配置Provider Manager 7.2.2 根据数据库验证身份 7.2.3 根据LDAP仓库...

    Spring in Action(第二版 中文高清版).part1

    6.4.3 在Spring 2.0里声明事务 6.4.4 定义注释驱动事务 6.5 小结 第7章 保护Spring 7.1 Spring Security介绍 7.2 验证用户身份 7.2.1 配置Provider Manager 7.2.2 根据数据库验证身份 7.2.3 根据LDAP仓库...

    千方百计笔试题大全

    13、swtich 是否能作用在byte 上,是否能作用在long 上,是否能作用在String上? 9 14、编程题: 用最有效率的方法算出2 乘以8 等於几? 9 15、有没有length()这个方法? String 有没有length()这个方法? 9 16、在JAVA ...

    java面试宝典

    13、swtich 是否能作用在byte 上,是否能作用在long 上,是否能作用在String上? 9 14、编程题: 用最有效率的方法算出2 乘以8 等於几? 9 15、有没有length()这个方法? String 有没有length()这个方法? 9 16、在JAVA ...

    Spring in Action(第2版)中文版

    6.4.3在spring2.0里声明事务 6.4.4定义注释驱动事务 6.5小结 第7章保护spring 7.1springsecurity介绍 7.2验证用户身份 7.2.1配置providermanager 7.2.2根据数据库验证身份 7.2.3根据ldap仓库进行身份验证 ...

    Spring-Reference_zh_CN(Spring中文参考手册)

    5. 校验,数据绑定,BeanWrapper,与属性编辑器 5.1. 简介 5.2. 使用Spring的Validator接口进行校验 5.3. 从错误代码到错误信息 5.4. Bean处理和BeanWrapper 5.4.1. 设置和获取属性值以及嵌套属性 5.4.2. 内建的...

    Spring中文帮助文档

    5. 校验,数据绑定,BeanWrapper,与属性编辑器 5.1. 简介 5.2. 使用Spring的Validator接口进行校验 5.3. 从错误代码到错误信息 5.4. Bean处理和BeanWrapper 5.4.1. 设置和获取属性值以及嵌套属性 5.4.2. 内建...

    涵盖了90%以上的面试题

    length属性和length()方法有什么区别 finally块中的代码什么时候被执行 Java中的异常处理机制的简单原理和应用。 java socket java序列化 JVM加载class文件的原理 双亲委派模型 为什么要自定义类加载器 如何自定义...

Global site tag (gtag.js) - Google Analytics