在下面的场景中,“hasA”条件被检查两次,有没有办法模仿这个类似于if / else的块,这样条件只被评估一次
<s:decorate template="/layout/display.xhtml">
<h:outputText value="Print A." rendered="#{hasA}"/>
<h:outputText value="Print B." rendered="#{!hasA}"/>
</s:decorate>
答案 0 :(得分:6)
您可以使用EL表达式
在value属性中编写条件 <h:outputText value="#{hasA ? 'Print A.' : 'Print B.'}" />
答案 1 :(得分:1)
为了避免这个问题,你可以确保getter不会做任何复杂的东西两次或基本上返回一个布尔值。你还应该确保getter是indempotent:调用它两次应该产生相同的结果。为此,你可以
解释不是很清楚,但你应该看到这个想法。我没有看到多次评估简单的getter有什么问题。