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



