Domanda

All'interno di un foraggio nidificato, l'accesso alla stessa variabile restituisce valori diversi. Ciò accade quando la pagina viene ricaricata, non al primo caricamento.

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

Dopo il ricaricamento della pagina, transizioneItem.Name restituisce il valore corretto per 3 e 4 e valori diversi per 1 e 2. Forse un problema di integrazione JSF-JSTL?

È stato utile?

Soluzione 3

Trovato una soluzione alternativa, eliminando il ciclo forEach interno, restituendo così un elenco lineare dal controller.

Altri suggerimenti

Vedo che stai usando Facelets.

Forse puoi provare a sostituire il tuo <c:forEach> con <ui:repeat> ...

Il codice diventerà quindi:

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

In generale, provo a usare l'interfaccia utente: ripeti la maggior parte delle volte. Quando stavo riscontrando problemi di c: set, ho trovato questo blog, che è stato molto utile e potrebbe applicarsi anche nel tuo caso.

http://www.ilikespam.com / blog / c: foreach-vs-ui: repeat-in-facelets

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top