Мой управляемый компонент: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()» - это вызов 4 раза моим ForEach. Но я просто не позвонил «getLiQuickNav()» один раз ... Как назвать это всего один раз?
Вопрос о бонусе: Почему «getLiQuickNav()» является вызовом 4 раза, тогда как у меня есть только 3item «tata, titi, toto»?
Спасибо-х
Я не думаю, что что-то вроде выше - хорошая практика в целом. Нет причин для ленивой инициализации чего-либо с 3-мя элементами. Построить список в конструкторе или статическом блоке. – GreenieMeanie
@ GreenieMeanie - это, очевидно, тривиальный пример, возможно, что фактические данные списка будут * не * доступны для построения объекта или инициализации статического блока (т. Е. Если он был извлечен из некоторого внешнего источника, такого как база данных). Ответ должен был показать, что построение списка не должно выполняться при каждом вызове getLiQuickNav(). – mtpettyp