我有一个复合组件,这是它的一个片段。
<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,我该怎么做?
答案 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>