开发者

How to avoid repeat evaluation of EL

开发者 https://www.devze.com 2023-01-13 03:47 出处:网络
I\'m developing a web interface with seam/richfaces. Alot of the components has something akin to <h:panelGrid rendered=\"#{complexbean.heavyoperation()}\">

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.

0

精彩评论

暂无评论...
验证码 换一张
取 消