我试图避免使用c:forEach,因为我听说JSTL与JSF的渲染阶段没有很好的混合......我根本不确定这个说法。相反,我不得不求助于使用c:forEach而不是ui:在许多情况下重复,因为ui:repeate只是不对集合进行迭代...这种情况在很多情况下发生,我无法隔离原因,并且在所有情况下这些案例c:forEach是一个非常好的替代品。我的问题是关于c:forEach表现不佳的一个案例,并且ui:repeat没有从集合中返回任何内容(即使它重复装饰html标签的次数正确)。
有时会发生在c:forEach中创建的JSF组件散布在整个页面上,将装饰HTML标记留在c:forEach的主体中,并将其渲染到页面中的其他位置。这种情况只发生了一些时间,特别是在使用F5进行刷新时(大多数情况下使用Ctrl + F5进行后续刷新)。
我完全感到困惑,并且会欣赏有关正在发生的事情的任何想法。为什么ui:repeat(和ice:panelSeries)没有从集合中获取值?为什么c:forEach散射是满足的地方(在构建JSf组件树时似乎是竞争条件..也许渲染应该等待c:forEach而它没有)?为什么只在这种情况下才会发生?
我很抱歉我没有包含任何代码片段或屏幕截图,因为我不知道要包括什么......问题太笼统了。但你可以非常容易理解我的语法是正确的......我已经检查过了......我没有使用状态变量(这在ui中引起了太多麻烦:重复)。
答案 0 :(得分:1)
ui:重复只是不迭代
以下代码有效:
<ui:repeat value="#{myCollection}" var="item">
<h:outputText value="#{item}" />
</ui:repeat>
为什么只在这种情况下发生?
没有this case
的例子,很难知道..
但是,c:forEach vs ui:repeat document可能会帮助您找到原因。