【发布时间】:2009-03-06 14:44:51
【问题描述】:
在嵌套的 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 集成问题?
【问题讨论】:
-
一般来说,Jsp/jsf 中的嵌套 forEach 循环告诉我控制器或生成的对象自身的权重不足 - 您可能需要考虑重构,因此只需要一个 forEach 循环.
-
这确实是一个可行的解决方案。 (现在才注意到你的评论,还在习惯这个网站!)