jsf 1.1中的java BigDecimal舍入
JSF1.1使用的el-1.0中有一个bug,它将BigDecimal转换为double,然后在更新模型阶段返回BigDecimal。这发生在ELSupport中。java->;强制编号类,并在el-impl-2.1.2-b03中固定。最终结果是,如果用户输入54.93,则结果为54.92999999。。。当updateModel阶段发生时
假设我没有升级到el-2.1.2-b03的选项,但仍然必须保证我的计算和发送到后端的内容的准确性。最佳的取整策略是什么?我想简单地用ROUND_HALF_的舍入策略将scale设置为2,即使在updateModel阶段在我的支持bean中调用setter方法时也是如此
有更好的解决办法吗
# 1 楼答案
JSF 1.1中没有解决方案。这两个解决办法是:
绑定到字符串并通过调用新的BigDecimal(字符串)转换为BigDecimal
继续绑定到BigDecimal,但附加一个ValueChangeListener,在调用FacesContext上的renderResponse之前,您可以在其中手动设置数据模型中的值。必须通过调用renderResponse跳过更新模型阶段,否则这将不起作用