Могу ли я использовать f:convertNumber с h: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>
Если я хочу отформатировать значение 3, используя <f:convertNumber>
, Как мне это сделать?
1 ответ
Решение
<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>