如何使用pe:inputNumber和BigDecimal

时间:2013-02-15 16:33:21

标签: primefaces-extensions

使用pe的正确/最佳方式是什么:inputNumber用于精确的大小数?我必须接受最多可包含4位小数的货币输入,且不得四舍五入。现在我正在做以下事情:

public void withdraw(Number amount) {
 BigDecimal d = new BigDecimal(amount.doubleValue());
 // process 
}

<pe:inputNumber roundMethod="S" decimalPlaces="4" symbol="#{applicationBean.currentCurrencySymbol}" required="true" value="#{flowScope.Amount}"/>

<p:commandButton value="Proceed" type="submit" ajax="true" actionListener="#{myBean.withdraw(flowScope.Amount)}"
</p:commandButton>

我担心的是,inputNumber会在内部将值转换为Double,这可能会在我将其转换为BigDecimal时导致舍入错误。

1 个答案:

答案 0 :(得分:1)

PrimeFaces 扩展 InputNumber 不久前已移至 PrimeFaces。 source of the renderer 已打开。在那里你会发现submitted values are directly used to instantiate a BigDecimal

BigDecimal value = new BigDecimal(submittedValue);

另请参阅展示示例,其中包含带有 BigDecimal 的示例:https://www.primefaces.org/showcase/ui/input/inputNumber.xhtml