0
我想知道哪两个代码片断更有效。@Produces在EL表达式中更有效一个吸气器
首先一个
在userSearch.xhtml
:
<rich:dataTable
var="user"
value="#{userSearchResultList}"
rendered="#{not empty userSearchResultList}">
...
</rich:dataTable>
在UserSearchAction.java
:
@Produces @RequestScoped
@Named("userSearchResultList")
public List<User> getResultList() {
return resultList;
}
第二个
在userSearch.xhtml
:
<rich:dataTable
var="user"
value="#{userSearchAction.resultList}"
rendered="#{not empty userSearchAction.resultList}">
...
</rich:dataTable>
在UserSearchAction.java
:
public List<User> getResultList() {
return resultList;
}
在两种方案中,我变量由一种方法UserSearchAction.search()
填补。
我使用JBoss 7.0.2.Final和RichFaces的4.1.0.Final。
更一般地,我想知道这是否是最好写的生产者,而不是调用JSF文件中的某些类的子属性。
是的,这或多或少是我在想什么......但我想知道,如果在JBoss中使用的代码最终使得一个解决方案优于其他...但我认为我会不知道真正的直到我对此进行压力测试...无论如何。 – 2012-01-03 14:41:33
关于被召唤一次的好处! JSF可以多次解析属性,在极端情况下每个请求可以解析数十次。生产者本质上是一种在实例变量中缓存数据的声明性替代方法。使用比请求范围“便宜”的范围可能更有效。我认为不利的一面是可读性。第二种方法更清楚数据来自何处。 – 2012-01-05 18:45:42