I'm developing a web interface with seam/richfaces.
Alot of the components has something akin to
<h:panelGrid rendered="#{complexbean.heavyoperation()}">
...
</h:panelGrid>
<h:panelGrid rendered="#{!complexbean.heavyoperation()}">
...
</h:panelGrid>
In this case the #{!complexbean.heavyoperation()} gets evaluated twice.
My question is, is there anything similar to if-else statements I can use in the page to 开发者_开发百科avoid these multiple evaluation of the same EL (and I would like to avoid any uses of JSP stuff, i.e. %<% if ... %>% )?
Thanks!
I see you are using Seam
. Can't you just use a @Factory
in one of your backing beans? In the same scope it will be evaluated only ONCE. This is its purpose.
@Factory("operation")
public bool heavyComputation() {
return true;
}
And then your view:
<h:panelGrid rendered="#{!operation}">
...
</h:panelGrid>
<h:panelGrid rendered="#{!operation}">
...
</h:panelGrid>
I think this is much clearer. Hope that helps:)
If you have nothing against jstl, you can use c:choose/c:when/c:otherwise construction.
精彩评论