zoukankan      html  css  js  c++  java
  • Struts2对于BigDecimal类型的转换问题

    Struts2对常用的数据类型如String、Integer、Double等都添加了转换器进行对应的转换操作。

    BigDecimal其实也算作是一种常用的数据类型,但Struts2没有对该类型设置转换器。没有转换器而且传递的值为空的属性,Struts2都给默认成了String类型进行处理。如果处理不当,就很容易造成类型转换异常。

    好在Struts2开放了接口,这样如果有极特别的类型需要用到可以在程序中专门设置转换器进行相应的处理。

     1 package com.hzunitech.system.common.convert;
     2 
     3 import java.math.BigDecimal;
     4 import java.util.Map;
     5 
     6 import org.apache.struts2.util.StrutsTypeConverter;
     7 
     8 public class BigDecimalConverter extends StrutsTypeConverter {
     9 
    10     @Override
    11     public Object convertFromString(Map context, String[] values, Class toClass) {
    12         BigDecimal bd = null;
    13         if(BigDecimal.class ==toClass){
    14             String bdStr = values[0];
    15             if(bdStr!=null&&!"".equals(bdStr)){
    16                 bd = new BigDecimal(bdStr);
    17             }else{
    18                 //bd = BigDecimal.valueOf(-1);
    19             }
    20             return bd;
    21         }        
    22         return BigDecimal.ZERO;
    23     }
    24 
    25     @Override
    26     public String convertToString(Map context, Object o) {
    27         
    28         if(o instanceof BigDecimal){
    29             BigDecimal b = new BigDecimal(o.toString()).setScale(2,BigDecimal.ROUND_HALF_DOWN);
    30             return b.toString();
    31         }        
    32         return o.toString();
    33     }
    34 
    35 }


    <!--[if !supportLists]-->2、  <!--[endif]-->在classpath目录下新建一个xwork-conversion.properties配置文件,具体内容如下

    1 java.math.BigDecimal=com.hzunitech.system.common.convert.BigDecimalConverter

    另外在java中的BigDecimal和String的相互转换

    /*由数字字符串构造BigDecimal的方法  
    *设置BigDecimal的小数位数的方法  
    */   
    import java.math.BigDecimal;   
    //数字字符串   
    String StrBd="1048576.1024";   
    //构造以字符串内容为值的BigDecimal类型的变量bd   
    BigDecimal bd=new BigDecimal(StrBd);   
    //设置小数位数,第一个变量是小数位数,第二个变量是取舍方法(四舍五入)   
    bd=bd.setScale(2, BigDecimal.ROUND_HALF_UP);   
    //转化为字符串输出   
    String OutString=bd.toString();  
  • 相关阅读:
    Webkit CSS properties
    轻量级前端MVVM框架avalon
    ExtJS4 源码解析(一)带项目分析
    web app开发利器
    运用webkit绘制渲染页面原理解决iscroll4闪动的问题
    吐槽:基于PhoneGap开发移动项目
    轻量级前端MVVM框架avalon
    轻量级前端MVVM框架avalon
    WinDbg 命令三部曲:(一)WinDbg 命令手册
    Unit Testing with NSubstitute
  • 原文地址:https://www.cnblogs.com/xiaoqisfzh/p/5550126.html
Copyright © 2011-2022 走看看