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



转换器在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>

相关内容

  • 没有找到相关文章