2011-12-21 5 views
0

私はこれらの2つのコードスニペットのどちらがより効率的であるか疑問に思っています。 UserSearchAction.java@ProducesはEL式のゲッターより効率的です

<rich:dataTable 
    var="user" 
    value="#{userSearchResultList}" 
    rendered="#{not empty userSearchResultList}"> 
... 
</rich:dataTable> 

userSearch.xhtml


まず1

@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ファイルの一部のクラスのサブプロパティを呼び出すよりも、プロデューサを書く方が良いかどうかを知りたかったのです。

答えて

1

プロデューサーの制作方法に応じて異なります。スコープが依存している場合(つまりスコープがない場合やクラスを含むクラスの場合)、そのメソッド内で何をしなければならないかによって、最終的に同じになります。

この例では、プロデューサメソッドは1回のみ(要求ごとに)呼び出す必要があるため、より効率的であるはずです。

+0

はい、これは多分私が考えていたものでしたが、JBossで使用されているコードが最終的に他のソリューションより優れているかどうかを知りたかったのですが、実際にはわかりませんでした私はストレステストをするまで...とにかく感謝します。 –

+1

一度しか呼びたくないという良い点! JSFは何度もプロパティを解決できますが、極端な場合はリクエストごとに数十回です。プロデューサは、本質的に、インスタンス変数のデータをキャッシュするための宣言的な代替品の一種です。要求スコープよりも「安い」スコープを使用する方が効率的かもしれません。私が思うところは、読みやすさです。 2番目のアプローチでは、データがどこから来るのかがより明確になります。 –

関連する問題