문제

중첩 된 foreach 내부에서 동일한 변수에 액세스하면 다른 값이 반환됩니다. 이것은 첫 번째로드가 아닌 페이지를 다시로드 할 때 발생합니다.

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

페이지를 다시로드 한 후 전환 시티에서 이름은 3과 4의 올바른 값을 반환하고 1과 2에 대해 다른 값을 반환합니다.

도움이 되었습니까?

해결책 3

내부 Foreach 루프를 제거하여 해결 방법을 찾아 컨트롤러에서 선형 목록을 반환합니다.

다른 팁

나는 당신이 페이스 섹스를 사용하고 있음을 알았습니다.

어쩌면 당신은 당신의 교체를 시도 할 수 있습니다 <c:forEach> ~에 의해 <ui:repeat>...

코드는 다음과 같습니다.

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

일반적으로 UI를 사용하려고합니다. 대부분의 시간을 반복합니다. C : Set 문제가있을 때이 블로그를 찾았습니다.이 블로그는 매우 도움이되었으며 귀하의 경우에도 적용될 수 있습니다.

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

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top