problema JSF JSTL com forEach aninhadas
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?
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