@Produces比EL表达式中的getter更有效

时间:2011-12-21 15:53:59

标签: jsf richfaces java-ee-6 el cdi

我想知道这两个代码段中的哪一个更有效率。


第一个

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;
}

在这两个解决方案中,我的resultList变量都由方法UserSearchAction.search()填充。

我使用JBoss 7.0.2.Final和RichFaces 4.1.0.Final。

更一般地说,我想知道编写生成器是否比调用JSF文件中某些类的子属性更好。

1 个答案:

答案 0 :(得分:1)

这取决于您的制作人如何制作正在制作的内容。如果它是依赖范围的(意味着你没有范围,也没有包含类)它最终是相同的,可能更少取决于你在该方法中必须做什么。

在您的示例中,它应该更有效,因为该生产者方法应该只被调用一次(每个请求)。