[英]Formatting number as Currency and storing as Integer
我有一個輸入字段,用戶可以在其中輸入以下格式的價格: 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
並再次顯示在下一頁上,格式為123.456,78
。
這是正確的方法嗎?
您可以在 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>
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.