簡體   English   中英

將數字格式化為貨幣並存儲為整數

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM