我有一个输入字段,用户可以在其中输入以下格式的价格:123.456,78 EUR
<p:inputNumber id="amount" symbol=" EUR" ... />
在备用bean中,金额必须作为整数处理:12345678
public String addNewPrice(int amount) {
// processing and sending to backend
}
当我输入:12,34
(= 12欧元和34美分)时,它显然被识别为字符串,而不是整数,并引发异常:
未找到方法:com.proj.ctrl.addNewPrice(java.lang.String)类
当我添加numberConverter
时,它似乎起初会起作用:
<p:inputNumber ...>
<f:convertNumber minFractionDigits = "2" />
</p:inputNumber>
它将数字传递到下一页,我试图在此显示它:
<p:outputLabel id="amount" ...>
<f:convertNumber minFractionDigits = "2" />
</p:outputLabel>
但是作为输出,我得到:1.234,00
而不是12,34
。
tl; dr::我正在尝试输入格式为123.456,78
的价格,将其存储为12345678
的整数,并在下一页再次显示为{ {1}}。
这是正确的方法吗?
答案 0 :(得分:0)
您可以将价格保存在BigDecimal中,因此在xhtml中可以保存
<p:inputNumber autocomplete="off" id="amount"
minValue="0" maxValue="999999999999.99" placeholder="0"
decimalSeparator="," thousandSeparator="."
decimalPlaces="8" value="#{backingBean.price}">
</p:inputNumber>
然后在backingBean中接收值,如:
private BigDecimal price;
// ... Getter & Setter
对于输出,您可以使用f:convertNumber
<h:outputText style="font-weight: bold;"
value="#{backingBean.price}">
<f:convertNumber type="number" pattern="###.###,##"
locale="de_DE"/>
</h:outputText>