Mein Managed Bean:FürJeden und 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;
}
Mein forEach:
<c:forEach var="categorie" items="#{mainControleur.liQuickNav}">
<h:outputLabel value="${categorie}"/>
</c:forEach>
Mein Ausgangsstrom:
ich hier bin ...
ich hier bin ...
Ich bin hier ...
Ich bin hier ...
Wie Sie sehen können "getLiQuickNav()" ist 4 mal von meinem ForEach anrufen. Aber ich möchte einfach "getLiQuickNav()" einmal anrufen ... Wie man es nur einmal nennt?
Bonus Frage: Warum "getLiQuickNav()" Anruf 4time ist, während ich nur 3 Item "Tata, Titi, Toto" habe?
Dankten
Ich denke nicht, dass etwas wie oben ist eine gute Praxis im Allgemeinen. Es gibt keinen Grund für die faule Initialisierung von etwas mit 3 Elementen. Konstruiere die Liste im Konstruktor oder einen statischen Block. – GreenieMeanie
@GreenieMeanie - dies ist offensichtlich ein triviales Beispiel, die Chancen stehen gut, dass die tatsächlichen Listendaten * nicht * für die Objekterstellung oder die statische Blockinitialisierung verfügbar wären (d. H. Wenn sie aus einer externen Quelle wie einer Datenbank gezogen wurde). Die Antwort sollte verdeutlichen, dass das Erstellen der Liste nicht bei jedem Aufruf von getLiQuickNav() erfolgen sollte. – mtpettyp