我可以使用f:convertNumber和h:outputFormat

时间:2015-01-15 13:57:34

标签: java jsf outputformat

我有一个复合组件,这是它的一个片段。

<h:outputFormat id="output" value="{0} / {1} / {2}" rendered="#{cc.attrs.readOnly}" styleClass="#{cc.attrs.styleClass}">
    <f:param value="#{empty cc.attrs.value1 ? '-' : cc.attrs.value1}" />
    <f:param value="#{empty cc.attrs.value2 ? '-' : cc.attrs.value2}" />
    <f:param value="#{empty cc.attrs.value3 ? '-' : cc.attrs.value3}"/>
</h:outputFormat>

如果我想使用<f:convertNumber>格式化value3,我该怎么做?

1 个答案:

答案 0 :(得分:4)

<h:outputFormat>使用了标准java.text.MessageFormat API。继续点击该链接并阅读javadoc。

<f:convertNumber>使用了标准java.text.NumberFormat API,它恰好也得到了MessageFormat的支持。正如其javadoc所说,数字模式可以用{[index], number, [pattern]}表示。

因此,(这个例子假设您需要2个固定长度的小数位数):

<h:outputFormat id="output" value="{0} / {1} / {2,number,#.00}" rendered="#{cc.attrs.readOnly}" styleClass="#{cc.attrs.styleClass}">
    <f:param value="#{empty cc.attrs.value1 ? '-' : cc.attrs.value1}" />
    <f:param value="#{empty cc.attrs.value2 ? '-' : cc.attrs.value2}" />
    <f:param value="#{empty cc.attrs.value3 ? '-' : cc.attrs.value3}"/>
</h:outputFormat>