私の管理Bean:のForEachとFaceletsの
public List<String> getLiQuickNav(){
System.out.println("I'm here...");
List<String> l = new ArrayList<String>();
l.add("toto");
l.add("tata");
l.add("titi");
return l;
}
私のforEach:
<c:forEach var="categorie" items="#{mainControleur.liQuickNav}">
<h:outputLabel value="${categorie}"/>
</c:forEach>
私の出力ストリーム:私がここにいる
私がここにいる
... ...
私がここにいる...
私がここにいる...
「getLiQuickNav()」は私のForEachによって4回呼び出されます。しかし、私はちょうど "getLiQuickNav()"を呼び出すwan'tを1回... どのようにそれを一度呼び出すには?
ボーナスに関する質問: 「getLiQuickNav()」は4時間かけて呼び出されるのに対し、「タタ、ティティ、トト」は3つしかないのはなぜですか?
感謝の
私は上記のようなものは一般的には良い練習ではないと思います。 3つの項目で何かを怠惰に初期化する理由はありません。コンストラクタまたは静的ブロックにリストを構築します。 – GreenieMeanie
@GreenieMeanie - これは明らかに簡単な例です。実際のリストデータは、オブジェクトの構築や静的ブロックの初期化(つまり、データベースなどの外部ソースから取得した場合)で利用できない可能性があります。その答えは、getLiQuickNav()を呼び出すたびにリストの作成を行うべきではないことを説明するためのものです。 – mtpettyp