gpt4 book ai didi

java - ForEach 和 Facelets

转载 作者:行者123 更新时间:2023-12-01 07:43:02 27 4
gpt4 key购买 nike

我的托管 bean:

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()”一次......如何只调用一次?

奖励问题:为什么“getLiQuickNav( )”被调用了 4 次,而我只有 3 项“tata,titi,toto”?

谢谢

最佳答案

您无法控制getLiQuickNav()的次数被调用 - 考虑缓存您的列表,这样它就不会在调用之间重建。

private List<String> l;

public List<String> getLiQuickNav()
{
if ( l == null )
{
System.out.println("I'm here...");

l = new ArrayList<String>();
l.add("toto");
l.add("tata");
l.add("titi");
}
return l;
}

您也应该使用<ui:repeat/>而不是<c:forEach/> 。看这个blog进入原因。

关于java - ForEach 和 Facelets,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/946202/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com