el-1.0中存在一个错误,jsf 1.1使用它在更新模型阶段将BigDecimal转换为double然后再转换回BigDecimal。这发生在ELSupport.java中 - > coerceToNumber类并在el-impl-2.1.2-b03中修复。最终结果是,如果用户输入54.93,那么当updateModel阶段发生时,它将导致54.92999999 ....
假设我没有升级到el-2.1.2-b03的选项,但仍然必须保证我的计算的准确性以及我发送到后端的内容。什么是最好的舍入策略?我想在每次在updateModel阶段在我的支持bean中调用setter方法时,只需使用ROUND_HALF_EVEN的舍入策略将比例设置为2。
有更好的解决方案吗?
答案 0 :(得分:1)
JSF 1.1中没有解决方案。两种解决方法是:
绑定到String并通过调用new BigDecimal(string)转换为BigDecimal;
继续绑定到BigDecimal,但附加一个ValueChangeListener,您可以在FacesContext上调用renderResponse之前手动设置数据模型中的Value。您必须通过调用renderResponse跳过更新模型阶段,否则这将无效。