c: foreach usando List: deve ser avaliada como uma coleção, Mapa, Array, ou nula
-
13-09-2019 - |
Pergunta
Então, eu estou tentando fazer um loop sobre um List<MyClass>
para exibição na visão da minha candidatura primavera webflow. No entanto eu recebo o erro deve ser avaliada como uma coleção, Mapa, Array, ou nulo.
<c:forEach items="#{orderedStuff}" var="a">
#{a.PrettyName}test
</c:forEach>
Eu também tentei $ em vez de #.
Aqui é a minha definição de fluxo de XML.
<view-state id="bookToc">
<on-render>
<evaluate expression="stuffService.getOrderedStuff(stuff)" result="viewScope.orderedStuff"
result-type="dataModel" />
</on-render>
</view-state>
E a função que retorna a lista de seções.
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;
}
A coisa é, este código FUNCIONA
<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>
Solução
Eu acho que você teria que chamar do âmbito de aplicação que você está criando
Tente
<c:forEach items="#{bookTok.orderedStuff}" var="a">
E, por isso são as suas listas de final?
Outras dicas
Eu acho que <c:forEach...
precisa de um desses tipos. Você já tentou convertê-lo para um array, por exemplo:
// Create an array containing the elements in a list
Stuff[] array = (Stuff[])orderedStuff.toArray(new Stuff[orderedStuff.size()]);
Eu não tenho trabalhado em Java por um tempo, me perdoe se isso está fora de forma.
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow