`
zhangfeilo
  • 浏览: 392214 次
  • 性别: Icon_minigender_1
  • 来自: 昆明
社区版块
存档分类
最新评论

解决struts2中Double类型的转换问题

阅读更多

今天做项目的时候,突然遇到个意想不到的问题,在我的usr.jsp中有一个:

<input size="10" value="0" name="creditLine" />,

这个对应到model里面的private Double creditLine;

 

@Column(name = "credit_line", precision = 10)
public Double getCreditLine() {
   return this.creditLine;
}

public void setCreditLine(Double creditLine) {
   this.creditLine = creditLine;
}

 

其它表单项都是string或者非Double型 ,

 

表示提交后,报错,提示找不到setCreditLine(String xx)方法,我的creditLine明明是Double型,为什么它非要给我换成String型呢,无奈之下,想到了自定义类型转换,于是写了个DoubleConvert如下:

Java代码
  1. package com.***.rating.helper;
  2. import java.math.BigDecimal;
    import java.util.Map;
    import org.apache.struts2.util.StrutsTypeConverter;
  3. /**
    * @author zhangyx
    * @since 2009-12-18
    */
    public class DoubleConvert extends StrutsTypeConverter {
  4. @Override
    public Object convertFromString(Map context, String[] values, Class toClass) {
       //System.out.println(">>>>>>>>>>>>>>>>>>>>>>>>调用类型转换");  
       //System.out.println(">>>>>>>>>>>>>>>>>>>>>>>>" + toClass);  
       if (Double.class == toClass) {
        String doubleStr = values[0];
        //System.out.println("获取到的字符串" + doubleStr);
        Double d = null;
        if(!doubleStr.equals("")){
         d = Double.parseDouble(doubleStr);
        }
        return d;
       }
       return 0;
    }
  5. @Override
    public String convertToString(Map context, Object o) {
       //System.out.println(">>>>>>>>>>>>>>>>>>value " + o);  
       //System.out.println("value instanceof Double " + (o instanceof Double));
            if(o instanceof Double){
                Double d = (Double)o;
                BigDecimal b = new BigDecimal(d.doubleValue()).setScale(2,BigDecimal.ROUND_HALF_DOWN);
                return b.toString();
            }
       return o.toString();
    }
  6. }

 

 

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

Java代码
  1. java.lang.Double=com.prl.helper.DoubleConvert  
java.lang.Double=com.prl.helper.DoubleConvert

 

这是个全局转换器,以后只要遇到double型的字段,都可以通过这个转换器来转换。

重启tomcat,提交表单,运行成功。

 

0
0
分享到:
评论

相关推荐

    java面试题大全--java基础,struts,spring,ejb等

    如何将数值型字符转换为数字(Integer,Double) 如何将数字转换为字符 如何取小数点前两位,并四舍五入。 4.日期和时间 如何取得年月日,小时分秒 如何取得从1970年到现在的毫秒数 如何获取某个日期是当月的...

    Struts in Action中文版

    2. 深入 STRUTS架构..................................................................................37 2.1. 随便谈谈......................................................................................

    整理后java开发全套达内学习笔记(含练习)

    注意:默认类型转换(自动类型提升)会丢失精度,但只有三种情况: int&gt;float; long&gt;float; long&gt;double. 看一下他们的有效位就明白。 二进制是无法精确的表示 0.1 的。 进行高精度运算可以用java.math包中...

    struts in Action

    2. 深入STRUTS 架构..................................................................................37 2.1. 随便谈谈.......................................................................................

    java面试题

    int和Integer有什么区别? 答:int是java的原始数据类型,Integer是java为int提供的封装类... 答:基本数据类型8种:int、short、byte、long、float、double、char、boolean String不是基本数据类型,引用数据类型。 ...

    JAVA面试题最全集

    如何将数值型字符转换为数字(Integer,Double) 如何将数字转换为字符 如何取小数点前两位,并四舍五入。 4.日期和时间 如何取得年月日,小时分秒 如何取得从1970年到现在的毫秒数 如何获取某个日期是当月的...

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

    这是2个压缩包中的第二个,请一并将第一个下载后,随便解压其中一个即可。 如果只希望下载其中一部分即可阅读,可下载另一个pdf: http://download.csdn.net/detail/oqqsun12345678/5215337 内容简介 出版日期: ...

    Java常见面试题208道.docx

    26.如何实现数组和 List 之间的转换? 27.ArrayList 和 Vector 的区别是什么? 28.Array 和 ArrayList 有何区别? 29.在 Queue 中 poll()和 remove()有什么区别? 30.哪些集合类是线程安全的? 31.迭代器 Iterator ...

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

    这是2个压缩包中的第一个,请与第二个一并下载,然后随便解压其中一个即可。如果只想下载其中一部分,可下载pdf: http://download.csdn.net/detail/oqqsun12345678/5215337 这个pdf是665页中的前404页,后面200多页...

    java 面试题 总结

    多态性语言具有灵活、抽象、行为共享、代码共享的优势,很好的解决了应用程序函数同名问题。 2、String是最基本的数据类型吗? 基本数据类型包括byte、int、char、long、float、double、boolean和short。 java.lang....

    freemarker总结

    2,使用+运算符时,如果一边是数字,一边是字符串,就会自动将数字转换为字符串再连接,如:${3 + "5"},结果是:35 使用内建的int函数可对数值取整,如: ${ (x/2)?int } ${ 1.1?int } ${ 1.999?int } ${ -1.1?int } ...

    超级有影响力霸气的Java面试题大全文档

    多态性语言具有灵活、抽象、行为共享、代码共享的优势,很好的解决了应用程序函数同名问题。 5、String是最基本的数据类型吗?  基本数据类型包括byte、int、char、long、float、double、boolean和short。  java....

    工程硕士学位论文 基于Android+HTML5的移动Web项目高效开发探究

    然而,由于HTML5的W3C标准规范还未制定,安卓系统中类浏览器Webview自身存在一些局限性,因此仍存在着诸多问题亟需解决,包括:(1)多窗口类浏览器模式问题。安卓上用于加载的Webview视图窗口只是作为类浏览器而...

Global site tag (gtag.js) - Google Analytics