2009-06-15 8 views
1

Donc j'essaye de boucler sur un List<MyClass> pour l'affichage dans l'affichage de mon application printanière de webflow. Cependant, j'obtiens l'erreur Doit évaluer à Collection, Map, Array ou null.c: foreach en utilisant List: Doit évaluer en Collection, Map, Array, ou null

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

J'ai également essayé $ au lieu de #.

Voici ma définition de flux xml.

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

Et la fonction qui renvoie la liste des sections.

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

La chose à ce sujet est, ce code FONCTIONNE

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

Répondre

2

Je pense que vous auriez à appeler de la portée que vous créez

Essayez

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

Et, pourquoi vos listes définitives?

+1

final signifie simplement que vous ne pouvez pas affecter une nouvelle référence à la liste (par exemple orderedStuff). C'est bien ici. –

0

Je suppose que <c:forEach... a besoin d'un de ces types. Avez-vous essayé de le convertir en un tableau, par exemple:

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

Je n'ai pas travaillé en Java pendant un certain temps, pardonnez-moi si cela est loin.

+0

n'est pas ArrayList/Liste une collection? C'est ce qui me déroute. –