自定义布尔转换器来设置样式类

时间:2015-06-13 19:37:44

标签: jsf converter

在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);
}

1 个答案:

答案 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>