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?

War es hilfreich?

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> ...

ersetzen

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

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top