zoukankan      html  css  js  c++  java
  • struts2中Double类型的转换

    今天做项目,ssh + Extjs,页面js中定义了几个NumberField,对应的value都是double类型的,其中有个NumberField的name为 name,结果执行的时候报错了,说找不到setName(String name)方法,可我分明写了get和set方法:setName(double name),奇怪,为什么是setName(String name)?原来问题出在struts上,struts自带的类型转换机制将double类型的数值用string转换了,当然出问题了。

    通过自定义类型转换可以解决此问题。写一个全局转换器,只要遇到double型的字段,都通过这个转换器来转换。代码如下:

    DoubleConvert.java:
     package com.gdqy.DoubleConvert;  
       
     import java.util.Map;   
     import org.apache.struts2.util.StrutsTypeConverter;  
       
     public class DoubleConvert extends StrutsTypeConverter {  
       
         @Override  
         public Object convertFromString(Map context, String[] values, Class toClass) {  
             if (Double.class == toClass) {  
                 String doubleStr = values[0];  
                 System.out.println("获取到的字符串" + doubleStr);  
                 Double d = Double.parseDouble(doubleStr);  
                 return d;  
             }  
             return 0;  
         }  
       
         @Override  
         public String convertToString(Map context, Object o) {   
             return o.toString();  
         }  
     }

    然后,在WebContent/WEB-INF/class目录下新建一个文件:xwork-conversion.properties,内容如下:

    java.lang.Double=com.gdqy.DoubleConvert

    将struts中的get和set方法定义成Double对象,如:

    private Double name;
    public void setName(Double name) {
            this.name = name;
        }

    重启tomcat,运行程序就没有问题了。

    全局数据类型转换的原理如下:

    在WEB-INF/classes目录下新建一个xwork-conversion.properties文件(在MyEclipse中可直接新建在 src文件夹下),写上: 自定义类型的包名+类名 = 执行转换的类的包名+Converter类名,如: java.lang.Double=com.gdqy.DoubleConvert.这样所在Action类在执行set 和get方法时都要首先要读取classes  目录下的xwork-conversion.properties文件(如果存在),以确定当前的属性要不要执行类型转换,如果需要则调用 properties文件指定的Converter类进行转换 ,这样就实现了全局的数据类型的转换.

  • 相关阅读:
    身残志坚,贫困学子返乡创业,做出生态产业园
    贫苦藏家女养豪猪,成功带领村民脱贫致富
    南航大学生校内创业,5个小摊位月销售5万元
    $_server[]关于浏览器和服务器的参数获取
    $_server[]关于浏览器和服务器的参数获取
    $_server[]关于浏览器和服务器的参数获取
    $_server[]关于浏览器和服务器的参数获取
    [20170616]recover copy of datafile 6.txt
    [20170616]recover copy of datafile 6.txt
    [20170616]recover copy of datafile 6.txt
  • 原文地址:https://www.cnblogs.com/iteakey/p/4052137.html
Copyright © 2011-2022 走看看