了解并理解<f:convertNumber>
标签DecimalFormat
在幕后使用非常重要。您可以在其 javadoc中找到所有模式字符。
似乎您期望DecimalFormat
模式字符,
并且.
实际上也用于最终格式。这是不真实的。它实际上只是模式字符(如 as d
、M
、y
等SimpleDateFormat
)。基本上,模式字符,
告诉DecimalFormat
打印给定语言环境指定的“分组分隔符”,等效地,模式字符.
告诉DecimalFormat
打印给定语言环境指定的“小数分隔符”。
实际上,实际打印的字符取决于给定的语言环境。对于英语语言环境(locale="en"
),打印的“分组分隔符”也只是巧合,
,但对于德语语言环境(locale="de"
),打印的“分组分隔符”确实是.
。
与具体问题无关type
,如果指定了属性,则属性<f:convertNumber>
完全没有作用pattern
。该type
属性在此示例中基本上是多余的,可以安全地删除而没有任何副作用。
如果您删除该pattern
属性,那么它实际上会被使用,并且您会看到正在使用货币的默认模式,这与¤#,##0.00
英语语言环境和¤ #,##0.00
德语语言环境相同。另请注意,表示货币符号的模式字符不是$
,而是¤
。currencySymbol
货币符号可以通过属性单独设置。因此,货币的正确方法是:
<f:convertNumber type="currency" locale="#{userSession.locale}" currencySymbol="$" />
同样,请参阅DecimalFormat
之前链接的 javadoc。