Question

Dans une foreach imbriquée, accéder à la même variable renvoie des valeurs différentes. Cela se produit lorsque la page est rechargée, pas lors du premier chargement.

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

Après le rechargement de la page, transitionItem.Name renvoie la valeur correcte pour 3 et 4 et des valeurs différentes pour 1 et 2. Peut-être un problème d'intégration JSF-JSTL?

Était-ce utile?

La solution 3

Vous avez trouvé une solution de contournement en supprimant la boucle forEach interne, renvoyant ainsi une liste linéaire à partir du contrôleur.

Autres conseils

Je vois que vous utilisez Facelets.

Peut-être pouvez-vous essayer de remplacer votre <c:forEach> par <ui:repeat> ...

Le code deviendra alors:

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

En général, j'essaie d'utiliser ui: je répète la plupart du temps. Lorsque j’avais des problèmes avec c: set, j’ai trouvé ce blog, qui était très utile et qui pourrait également s’appliquer à vous.

http://www.ilikespam.com / blog / c: foreach-vs-ui: répétition des facelets

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top