javax.faces.convert.ConverterException: 不能理解为货币值
javax.faces.convert.ConverterException: could not be understood as a currency value
我无法将数字显示为货币。
我使用的代码是:
<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">
运气不好。
您正在尝试将 硬编码字符串 转换为货币数字。 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;
我无法将数字显示为货币。
我使用的代码是:
<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">
运气不好。
您正在尝试将 硬编码字符串 转换为货币数字。 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;