Reputation: 660
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!
Upvotes: 2
Views: 171
Reputation: 47373
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:)
Upvotes: 5
Reputation: 949
If you have nothing against jstl, you can use c:choose/c:when/c:otherwise construction.
Upvotes: 0