2009-06-15 1 views
1

Also versuche ich eine List<MyClass> Schleife für die Anzeige in der Ansicht meiner Spring-Webflow-Anwendung. Wie auch immer, ich erhalte den Fehler Muss zu einer Collection, Map, Array oder null ausgewertet werden.c: foreach using Liste: Muss zu einer Collection, Map, Array oder null auswerten

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

Ich habe auch $ anstelle von # versucht.

Hier ist meine XML-Flow-Definition.

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

Und die Funktion, die die Liste der Abschnitte zurückgibt.

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

Die Sache ist, wird dieser Code

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

Antwort

2

Ich glaube, Sie würden vom Umfang nennen, die Sie

Versuchen

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

Und erstellen, warum sind Ihre Listen endgültig?

+1

final bedeutet nur, dass Sie der Liste (z. B. orderedStuff) keine neue Liste zuweisen können. Das ist hier in Ordnung. –

0

Ich denke, <c:forEach... einer dieser Typen benötigt. Haben Sie versucht, es in ein Array konvertieren, z:

// Create an array containing the elements in a list 
Stuff[] array = (Stuff[])orderedStuff.toArray(new Stuff[orderedStuff.size()]); 

Ich habe nicht in Java für eine Weile gearbeitet, verzeiht mir, wenn auf diese Weise ausgeschaltet ist.

+0

ist nicht ArrayList/Auflistung auflisten? Das verwirrt mich. –