转换器在faces-config中定义.xml它将布尔值更改为字符串"Yes"或"No"
<converter>
<converter-id>booleanConverter</converter-id>
<converter-class>com.example.BooleanConverter</converter-class>
</converter>
这在使用时工作正常
<h:outputText value="#{bean.booleanValue}" converter="booleanConverter" />
但是,如果目的是为周围的div
元素设置样式,那么使用转换器是否可以这样做? 例如,如果定义了一个转换器,它返回字符串"booleanTrue"和"booleanFalse"(在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>
定义在支持豆子有效,但似乎不令人满意
public String booleanStyle(boolean value) {
BooleanStyleConverter bsc = new BooleanStyleConverter();
return bsc.getAsString(null, null, value);
}
转换器的全部意义在于将保存到后备 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>