假设我有这样的代码:
<h:outputFormat value="The number is {0, number, #.##}">
<f:param value="#{bean.double}" />
</h:outputFormat>
根据我的理解,JSF使用MessageFormat(String pattern, Locale locale)
方法转换值。因此,如果我的语言环境是西班牙语,而bean.double是3.72
,那么即使我的3,72
是SubformatPattern
,结果也会是#.##
。
有没有办法将数字格式化为3.72
并将语言环境保留为西班牙语?
仅供参考,我使用具有区域设置属性的f:view
元素设置区域设置 - 例如:
<f:view locale="#{localeBean.locale}"/>
参考:
答案 0 :(得分:0)
您可以overriding the renderer获取outputFormat
代码。
查看Mojarra source for OutputMessageRenderer
。找到这个陈述:
MessageFormat fmt = new MessageFormat(currentValue,
context.getViewRoot().getLocale());
在此声明中,将语言环境硬编码为英语,您就完成了。
简单的方法是使用硬编码的语言环境在bean中格式化您的数字并将其作为字符串返回,这样您就可以使用:
<h:outputFormat value="The number is {0}">
<f:param value="#{bean.formatDouble(bean.double)}" />
</h:outputFormat>
另见: