SpringMVC中自定义绑定BigDecimal类型数据的CustomEditor

问题:
在使用Spring的SimpleFormController的formBackingObject方法绑定待编辑表单内容时,对于BigDecimal类型的数据Spring绑定会报错,原因是表单域中的String类型数据无法转换为Bean中的BigDecimal

解决办法:
自定义一个特定类型的绑定类,在Controller中的initBinder方法中注册特定类型绑定方法,Spring在碰到此类型的数据时就会使用其转换数据类型


protected void initBinder(HttpServletRequest request,
ServletRequestDataBinder binder) throws Exception {
CustomBigDecimalEditor bigDecimalEditor = new CustomBigDecimalEditor();
binder.registerCustomEditor(BigDecimal.class, bigDecimalEditor);
super.initBinder(request, binder);
}



/**
* 类说明: BigDecimal custom property editor<br>
* 创建时间: 2008-2-26 下午03:15:03<br>
*
* @author Seraph<br>
* @email: seraph@gmail.com<br>
*/
public class CustomBigDecimalEditor extends PropertyEditorSupport {

public void setAsText(String text) throws IllegalArgumentException {
if (StringUtils.isEmpty(text)) {
// Treat empty String as null value.
setValue(null);
} else {
setValue(NumberUtils.getBigDecimal(text));
}
}
}



/**
* 类说明: Number handle utils<br>
* 创建时间: 2007-10-4 下午05:08:48<br>
*
* @author Seraph<br>
* @email: seraph@gmail.com<br>
*/
public class NumberUtils {

public static int parseInt(long l){
return BigDecimal.valueOf(l).intValue();
}

public static long parseLong(String s) {
return Long.parseLong(s.trim());
}

public static BigDecimal getBigDecimal(String s) {
return BigDecimal.valueOf(Long.parseLong(s.trim()));
}

}
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值