有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

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) 个答案

  1. # 1 楼答案

    JSF 1.1中没有解决方案。这两个解决办法是:

    1. 绑定到字符串并通过调用新的BigDecimal(字符串)转换为BigDecimal

    2. 继续绑定到BigDecimal,但附加一个ValueChangeListener,在调用FacesContext上的renderResponse之前,您可以在其中手动设置数据模型中的值。必须通过调用renderResponse跳过更新模型阶段,否则这将不起作用