在faces-config.xml中定义了一个转换器,它将一个布尔值更改为一个字符串"是"或"否"
<converter>
<converter-id>booleanConverter</converter-id>
<converter-class>com.example.BooleanConverter</converter-class>
</converter>
使用
工作正常<h:outputText value="#{bean.booleanValue}" converter="booleanConverter" />
但是如果打算使用转换器来设置周围的div
元素呢?例如,如果定义了一个返回String&#34; booleanTrue&#34;和&#34; booleanFalse&#34; (在CSS中定义)
<converter>
<converter-id>booleanStyleConverter</converter-id>
<converter-class>com.example.BooleanStyleConverter</converter-class>
</converter>
我可以这样做:
<div class="#{booleanStyleConverter.getAsString(null,null,bean.booleanValue)}">
<h:outputText value="#{bean.booleanValue}" converter="booleanConverter" />
</div>
在支持bean中定义但看起来不太令人满意
public String booleanStyle(boolean value) {
BooleanStyleConverter bsc = new BooleanStyleConverter();
return bsc.getAsString(null, null, value);
}
答案 0 :(得分:1)
转换器的重点是将保存到辅助bean的值更改为所需的值。你为什么不只是使用class="#{bean.booleanValue}"
?
甚至更简单:class="textBox.value eq 'true'? 'booleanTrue': 'booleanFalse'"
,其中textBox
是文本框的绑定:
<div class="#{textBox.value eq 'true'? 'booleanTrue': 'booleanFalse'}">
<h:outputText binding="#{textBox}" id="textBox" value="#{bean.booleanValue}"/>
</div>