实体中有个属性用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