struts2对于bigdecimal类型不支持默认转换的解决办法

来源:互联网 发布:麦壳少儿编程 编辑:程序博客网 时间:2024/06/05 04:27

实体中有个属性用bigdecimal类型,发现传参到后台控制台老是报错没有 setXxx(...String)方法,后来查资料发现struts2默认不支持bigdecimal类型的转换,需要实现转换器重写方法。

解决办法:

1,新建一个类继承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);         }         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();   }}

2, 在classpath目录下新建一个xwork-conversion.properties配置文件:

内容为 : java.math.BigDecimal=包名.BigDecimalConverter