自定义布尔转换器以设置样式 class
custom boolean converter to set style class
转换器在 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
元素设置样式,是否可以使用转换器?例如,如果定义了一个转换器,其中 return 字符串 "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>
在支持 bean 中定义有效但似乎不令人满意
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>
转换器在 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
元素设置样式,是否可以使用转换器?例如,如果定义了一个转换器,其中 return 字符串 "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>
在支持 bean 中定义有效但似乎不令人满意
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>