我正在使用 seam/richfaces 开发一个 Web 界面。
很多组件都有类似的东西
<h:panelGrid rendered="#{complexbean.heavyoperation()}">
...
</h:panelGrid>
<h:panelGrid rendered="#{!complexbean.heavyoperation()}">
...
</h:panelGrid>
在这种情况下,#{!complexbean.heavyoperation()} 被评估两次。
我的问题是,是否可以在页面中使用类似于 if-else 语句的内容来避免对同一 EL 进行多次求值(并且我想避免使用任何 JSP 内容,即 %<% if 。 .. %>% )?
谢谢!
最佳答案
我发现您正在使用Seam
。你不能在你的支持bean之一中使用@Factory
吗?在相同范围内,只会评估一次。这就是它的目的。
@Factory("operation")
public bool heavyComputation() {
return true;
}
然后你的观点:
<h:panelGrid rendered="#{!operation}">
...
</h:panelGrid>
<h:panelGrid rendered="#{!operation}">
...
</h:panelGrid>
我认为这更清楚了。希望有帮助:)
关于java - 如何避免重复评估 EL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3563120/