Pergunta

Dentro de um foreach aninhada, acessando a mesma variável está retornando valores diferentes. Isso acontece quando a página é recarregada, e não na primeira carga.

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

Depois de recarregar a página, transitionItem.Name retorna o valor correto para 3 e 4, e valores diferentes para 1 e 2. Talvez um problema de integração JSF-JSTL?

Foi útil?

Solução 3

Encontrada uma solução alternativa, por se livrar do loop forEach interior, retornando, assim, uma lista linear do controlador.

Outras dicas

Eu vejo que você está usando Facelets.

Talvez você pode tentar substituir o seu <c:forEach> por <ui:repeat> ...

O código irá então tornar-se:

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

Em geral, eu tento usar ui: repeat maior parte do tempo. Quando eu estava tendo c:. Questões set, eu encontrei este blog, que foi muito útil e pode aplicar no seu caso também

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

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top