在 Facelets 页面中,我有各种<h:inputText>
and <h:outputText>
组件,都需要相同的转换器。
我想避免重复转换器及其所有参数,如下所示:
<h:inputText id="bla" value="#{mybean.val}" >
<f:convertNumber locale="en" maxFractionDigits="3" minFractionDigits="3"/>
</h:inputText>
[...]
<h:outputText id="bla2" value="#{mybean.val2}" >
<f:convertNumber locale="en" maxFractionDigits="3" minFractionDigits="3"/>
</h:outputText>
[...]
<h:inputText id="bla3" value="#{mybean.val3}" >
<f:convertNumber locale="en" maxFractionDigits="3" minFractionDigits="3"/>
</h:inputText>
避免这些重复的最佳方法是什么?
我想我可以用<ui:include>
,但这意味着我必须为一行创建一个单独的文件,这似乎有点愚蠢。还有其他选择吗?
子类化转换器,您可以在构造函数中设置默认值。
@FacesConverter("defaultNumberConverter")
public class DefaultNumberConverter extends NumberConverter {
public DefaultNumberConverter() {
setLocale(Locale.ENGLISH);
setMinFractionDigits(3);
setMaxFractionDigits(3);
}
}
并按如下方式使用它:
<h:inputText id="bla" value="#{mybean.val}" converter="defaultNumberConverter" />
[...]
<h:outputText id="bla2" value="#{mybean.val2}" converter="defaultNumberConverter" />
[...]
<h:inputText id="bla3" value="#{mybean.val3}" converter="defaultNumberConverter" />
为了更进一步,创建一个标签文件或者一个复合文件 https://stackoverflow.com/questions/6822000/when-to-use-uiinclude-tag-files-composite-components-and-or-custom-componen/6822269#6822269包装所需的组件:
<my:inputNumber id="bla" value="#{mybean.val}" />
[...]
<my:outputNumber id="bla2" value="#{mybean.val2}" />
[...]
<my:inputNumber id="bla3" value="#{mybean.val3}" />
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)