zoukankan      html  css  js  c++  java
  • Struts中类型转换踩的坑

    出现的异常:

        

        当我输入的数据很大时候,转换后如上,这并不是我想要的,

        出现问题的原因:

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

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

      这个时候我们可以有2种方法解决这个问题

    1.:

    package com.hzunitech.system.common.convert;
    
    import java.math.BigDecimal;
    import java.util.Map;
    
    import org.apache.struts2.util.StrutsTypeConverter;
    
    public class BigDecimalConverter extends StrutsTypeConverter {
    
        @Override
        public Object convertFromString(Map context, String[] values, Class toClass) {
            BigDecimal bd = null;
            if(BigDecimal.class ==toClass){
                String bdStr = values[0];
                if(bdStr!=null&&!"".equals(bdStr)){
                    bd = new BigDecimal(bdStr);
                }else{
                    //bd = BigDecimal.valueOf(-1);
                }
                return bd;
            }        
            return BigDecimal.ZERO;
        }
    
        @Override
        public String convertToString(Map context, Object o) {
            
            if(o instanceof BigDecimal){
                BigDecimal b = new BigDecimal(o.toString()).setScale(2,BigDecimal.ROUND_HALF_DOWN);
                return b.toString();
            }        
            return o.toString();
        }
    
    }

     需要在配置文件:

    在classpath目录下新建一个xwork-conversion.properties配置文件,具体内容如下

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

    第二种:

      

    java.lang.Double = cn.sh.cares.framework.web.struts2.converter.DefaultStrutsTypeConverter
    java.lang.Float = cn.sh.cares.framework.web.struts2.converter.DefaultStrutsTypeConverter
    java.math.BigDecimal = cn.sh.cares.framework.web.struts2.converter.DefaultStrutsTypeConverter

    直接在xwork-conversion.properties配置就可以了

    解决后:

      每天进步一点,离梦想就近一点了!

  • 相关阅读:
    CSS深入之第四天
    CSS之第三天总结
    第二天对CSS的学习
    开始走进CSS世界
    Hbuilder实用技巧
    项目总结
    CSS3的chapter6
    CSS3的chapter5
    CSS3的chapter4
    CSS3的chapter3
  • 原文地址:https://www.cnblogs.com/java-synchronized/p/6932249.html
Copyright © 2011-2022 走看看