2009-06-15 2 views
1

그래서 스프링 웹 플로우 응용 프로그램보기에 List<MyClass>을 표시하려고 루프를 반복하려고합니다. 그러나 나는 Collection, Map, Array 또는 null로 평가되어야하는 오류를 얻는다.c : foreach using List : Collection, Map, Array 또는 null로 평가해야 함

<c:forEach items="#{orderedStuff}" var="a"> 
    #{a.PrettyName}test 
    </c:forEach> 

나는 # 대신 $를 시도했습니다.

다음은 내 xml 흐름 정의입니다.

<view-state id="bookToc"> 
    <on-render> 
     <evaluate expression="stuffService.getOrderedStuff(stuff)" result="viewScope.orderedStuff" 
      result-type="dataModel" /> 
    </on-render> 
</view-state> 

그리고 섹션 목록을 반환하는 함수.

public List<Stuff> getStuff(Stuff stuff) { 
    final List<Stuff> orderedStuff= new ArrayList<Stuff>(); 

    final List<Stuff> sections = stuff.getStuff(); 
    PropertyComparator.sort(sections, new MutableSortDefinition("sortOrder", true, true)); 

    for (Section stuff : stuffs) { 
     orderedStuff.add(stuff); 
     this.addSubsectionsToOrderedStuff(stuff, orderedStuff); 
    } 

    return orderedStuff; 
} 

이 약 것은,이 코드는 내가 <c:forEach... 그 유형 중 하나 필요 추측 WORK

<h:dataTable id="stuffList" value="#{orderedStuff}" var="s" 
      rendered="#{not empty orderedStuff}"> 
      <h:column> 
       <f:facet name="header"> 
        Section Title 
       </f:facet> 
       #{s.prettyName} 
       <h:dataTable value="#{s.chapters}" var="c" rendered="#{not empty s.chapters}"> 
        <h:column> 
         <f:facet name="header"> 
         Chapter Title 
         </f:facet> 
        #{c.title} 
        </h:column> 
       </h:dataTable>    
      </h:column> 
     </h:dataTable> 

답변

2

난 당신이

<c:forEach items="#{bookTok.orderedStuff}" var="a"> 

시도하고, 왜리스트는 최종 결과이며 당신이

만드는 범위에서 호출해야 할 것 같아?

+1

final이라는 것은 목록 (예 : orderedStuff) 참조에 새 목록을 할당 할 수 없다는 것을 의미합니다. 여기 괜찮습니다. –

0

않습니다. 가지고 당신은 예컨대, 배열로 변환 시도 :이 방법 꺼져있는 경우

나는 잠시 동안 자바에서 근무하지 않은
// Create an array containing the elements in a list 
Stuff[] array = (Stuff[])orderedStuff.toArray(new Stuff[orderedStuff.size()]); 

은 용서.

+0

아니 ArrayList/컬렉션을 나열 하시겠습니까? 그것이 저를 혼란스럽게합니다. –