在嵌套的 foreach 中,访问同一个变量会返回不同的值。这发生在页面重新加载时,而不是第一次加载时。
<ui:composition
xmlns="http://www.w3.org/1999/xhtml"
(...)
xmlns:c="http://java.sun.com/jstl/core"
xmlns:h="http://java.sun.com/jsf/html">
(...)
<c:forEach items="#{controller.availableTransitions}" var="transition">
<c:forEach items="#{transition.availableTransitions}" var="transitionItem">
<h:outputText value="1_#{transitionItem.name} 2_#{transitionItem.name}" />
3_#{transitionItem.name} 4_#{transitionItem.name}
</c:forEach>
</c:forEach>
</ui:composition>
页面重新加载后,transitionItem.Name 为 3 和 4 返回正确的值,为 1 和 2 返回不同的值。可能是 JSF-JSTL 集成问题?
最佳答案
我看到您正在使用 Facelets。
也许您可以尝试更换您的 <c:forEach>
通过 <ui:repeat>
...
代码将变为:
<ui:composition
xmlns="http://www.w3.org/1999/xhtml"
(...)
xmlns:c="http://java.sun.com/jstl/core"
xmlns:h="http://java.sun.com/jsf/html">
(...)
<ui:repeat value="#{controller.availableTransitions}" var="transition">
<ui:repeat value="#{transition.availableTransitions}" var="transitionItem">
<h:outputText value="1_#{transitionItem.name} 2_#{transitionItem.name}" />
3_#{transitionItem.name} 4_#{transitionItem.name}
</ui:repeat>
</ui:repeat>
</ui:composition>
关于java - 嵌套 forEach 的 JSF JSTL 问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/619097/