2015-11-03 69 views
3

我無法將數字顯示爲貨幣。javax.faces.convert.ConverterException:無法理解爲貨幣值

我使用的代碼是:

<h:outputText id="id_importo" value="33333,33"> 
    <f:convertNumber type="currency" currencySymbol="€" locale="it_IT"/> 
</h:outputText> 

產生這個錯誤:

javax.faces.convert.ConverterException: id_importo: '33333,33' could not be understood as a currency value. 
    at javax.faces.convert.NumberConverter.getAsObject(NumberConverter.java:621) 
    at 
.... 

Caused by: java.text.ParseException: Unparseable number: "33333,33" 
    at java.text.NumberFormat.parse(NumberFormat.java:344) 
    at javax.faces.convert.NumberConverter.getAsObject(NumberConverter.java:614) 
    ... 63 more 

我甚至沒有運氣試圖<h:outputText id="id_importo" value="33333,33">

回答

4

您正試圖將硬編碼字符串轉換爲貨幣編號。字符串值33333,33不是有效的貨幣編號。您需要在貨幣符號前面加上前綴,這正是您在轉換器中聲明的貨幣符號。逗號可以保留,因爲這確實是意大利語區域中正確的小數點分隔符。

<h:outputText id="id_importo" value="€ 33333,33">  
    <f:convertNumber type="currency" currencySymbol="€" locale="it_IT" /> 
</h:outputText> 

另外,如果您想將其解釋爲一個真正的十進制數,那麼你應該在EL表達式來包裝的價值和使用Java自身的小數點分隔.

<h:outputText id="id_importo" value="#{33333.33}">  
    <f:convertNumber type="currency" currencySymbol="€" locale="it_IT" /> 
</h:outputText> 

通常情況下,貨幣數字存儲爲BigDecimal類型的bean屬性不是字符串類型屬性。

<h:outputText id="id_importo" value="#{bean.price}">  
    <f:convertNumber type="currency" currencySymbol="€" locale="it_IT" /> 
</h:outputText> 
private BigDecimal price;