2009-06-15 60 views
1

所以我試圖在我的spring webflow應用程序的視圖中循環顯示List<MyClass>。但是,我得到的錯誤必須評估爲集合,映射,數組或null。c:foreach使用列表:必須評估爲集合,地圖,數組或空值

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

的可愛之處是,這個代碼不工作

<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)引用。這很好。 – 2009-06-15 20:52:40

0

我想<c:forEach...需要這些類型之一。您是否嘗試過將其轉換爲一個數組,e.g:

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

我還沒有在Java中有一段工作,原諒我,如果這是路要走。

+0

是不是ArrayList /列出一個集合?這讓我感到困惑。 – 2009-06-15 20:10:20

相關問題