JSF JSTL Problem mit verschachtelten forEach
Frage
Innerhalb eines verschachtelten foreach, die gleiche Variable Zugriff auf zurückkehrt unterschiedliche Werte. Dies geschieht, wenn die Seite neu geladen wird, nicht beim ersten Laden.
<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>
Nach dem Neuladen der Seite, gibt transitionItem.Name den richtigen Wert für 3 und 4, und unterschiedliche Werte für 1 und 2. Vielleicht ein JSF-JSTL Integrationsproblem?
Lösung 3
Gefunden eine Abhilfe, die von der inneren foreach-Schleife loszuwerden, so dass eine lineare Liste von der Steuerung zurück.
Andere Tipps
Ich sehe, dass Sie Facelets verwenden.
Vielleicht können Sie versuchen, Ihre <c:forEach>
von <ui:repeat>
...
Der Code wird dann zu:
<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>
Im Allgemeinen versuche ich ui zu verwenden: die meiste Zeit wiederholen. Als ich mit c: set Fragen, fand ich diesen Blog, was sehr hilfreich war und auch in Ihrem Fall anwenden
.http://www.ilikespam.com / blog / c: foreach-vs-ui: repeat-in-facelets