C:的foreach使用清单:必须评估到集合,映射,数组,或null
-
13-09-2019 - |
题
所以我想遍历一个List<MyClass>
显示在我的春天Webflow的应用程序的视图。但是我得到错误结果必须为收集,地图,数组,或者为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;
}
关于它的问题是,这种代码不会工作
<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>
解决方案
我觉得你必须从你所创建的范围内调用
尝试
<c:forEach items="#{bookTok.orderedStuff}" var="a">
和,为什么是你的最终名单?
其他提示
我想<c:forEach...
需要这些类型之一。您是否尝试将其转换为一个数组,e.g:
// Create an array containing the elements in a list
Stuff[] array = (Stuff[])orderedStuff.toArray(new Stuff[orderedStuff.size()]);
我没有在Java中工作了一段时间,原谅我,如果这是路要走。
不隶属于 StackOverflow