我正在开发一个带有seam / richfaces的Web界面。
很多组件都有类似于
的东西<h:panelGrid rendered="#{complexbean.heavyoperation()}">
...
</h:panelGrid>
<h:panelGrid rendered="#{!complexbean.heavyoperation()}">
...
</h:panelGrid>
在这种情况下,#{!complexbean.heavyoperation()}会被评估两次。
我的问题是,是否有类似if-else语句可以在页面中使用以避免对同一个EL进行多次评估(我希望避免使用JSP的东西,即%&lt;%if ...%&gt;%)?
谢谢!
答案 0 :(得分:5)
我发现你正在使用Seam
。你不能只在你的一个支持bean中使用@Factory
吗?在相同的范围内,它仅被评估为ONCE。这是它的目的。
@Factory("operation")
public bool heavyComputation() {
return true;
}
然后你的观点:
<h:panelGrid rendered="#{!operation}">
...
</h:panelGrid>
<h:panelGrid rendered="#{!operation}">
...
</h:panelGrid>
我认为这更加清晰。希望有所帮助:)
答案 1 :(得分:0)
如果你没有反对jstl,你可以使用c:choose / c:when / c:否则构造。