Является ли @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;
}
В обоих решениях моя переменная resultList
заполняется методом UserSearchAction.search()
.
Я использую JBoss 7.0.2.Final и RichFaces 4.1.0.Final.
В более общем плане, я хотел знать, лучше ли писать производителей, чем вызывать под-свойства некоторых классов в файлах JSF.
Ответы
Ответ 1
Это зависит от того, как ваш производитель определяет, что производится. Если он зависит от области видимости (что означает, что у вас нет области видимости на ней, ни на классе -содержании), она становится тем же самым, возможно, менее зависимым от того, что вам нужно делать внутри этого метода.
В вашем примере это должно быть более эффективным, потому что этот метод производителя следует вызывать только один раз (для каждого запроса).