javax.servlet.ServletException: javax.servlet.jsp.JspTagException: vous Ne savez pas comment itérer à travers fourni “articles” dans <forEach>

J'ai un Haricot qui détient les résultats. J'ai besoin d'utiliser JSTL pour itérer sur elle et de présenter les résultats. Ici, c'est le haricot:

public class DetResults
{
private List<String> headings;
private List<Class<?>> types;
private List<Object[]> data;
public DetResults() {}
public List<String> getHeadings() { return this.headings; }
public String getHeading(int which) { return this.headings.get(which); }
public List<Class<?>> getTypes() { return this.types; }
public Class<?> getType(int which) { return this.types.get(which); }
public List<Object[]> getData( ) { return this.data; }
public Object[] getDataAtRow( int row ) { return this.data.get(row); }
public void setHeadings( List<String> val ) { this.headings = val; }
public void setHeadings( String[] val ) { this.headings = Arrays.asList(val); }
public void addHeading( String val ) 
{ 
if( this.headings == null ) this.headings = new ArrayList<String>();
this.headings.add(val); 
}
public void setTypes( List<Class<?>> val ) { this.types = val; }
public void setTypes( Class<?> val[] ) { this.types = Arrays.asList(val); }
public void addType( Class<?> val ) 
{
if( this.types == null ) this.types = new ArrayList<Class<?>>();
this.types.add(val); 
}
public void setData( List<Object[]> val ) { this.data = val; }
//allow NPE to get thrown
public void setDataAtRow( Object[] val, int row ) { this.data.set(row, val); }
public void appendDataRow( Object[] val ) 
{
if( data == null ) data = new ArrayList<Object[]>(); 
this.data.add(val); 
}
public int getColumnCount() { return this.headings!=null?this.headings.size():0; }
}

Ici, c'est le gestionnaire qui va définir la fève à la JSP:

DetResults results = detDAO.fetchDetResults(paramBean);
request.setAttribute("results", results);
action.setJspURI(".../.jsp");

J'ai essayé de l'afficher comme suit:

<c:forEach var="results" items="${results}">
${results.heading}
</c:forEach>

Mais il a jeté l'exception suivante:

Causés par: javax.servlet.ServletException: javax.servlet.jsp.JspTagException: vous Ne savez pas comment itérer à travers fourni "articles" dans <forEach>

Si je consigner les résultats sur mon gestionnaire de la page comme ceci:

System.out.println( "\n\nthere are " + results.getColumnCount() + " columns in the result set" );
for( int i=0; i<results.getColumnCount(); i++ )
{
System.out.println( results.getHeading(i) + " --> " + results.getType(i) );
}

L'enregistrement semble montrer fines sur le serveur.

vous pouvez poster la trace de la pile?
ouais donnez-moi une minute pour l'exécuter à nouveau
La description du problème "c'est fait exploser à chaque fois que je le rendu de la page jsp" et "et la page cassé :(" loin de faciliter la compréhension du problème concret. Ne pas décrire le problème à partir de l'utilisateur final, mais du point de vue du développeur.
Juste ajouté erreur instack trace
Mauvaise idée, le nom de la variable la même chose que vous avez à parcourir--très déroutant. En tout cas, si c'est une instance de DetResults c'est dans results, bien sûr, vous ne pouvez pas effectuer une itération sur elle--vous auriez besoin pour effectuer une itération sur l'un de ses collections. Et si elle est parallèle à l'aide de trois listes, c'est de faire le mal.

OriginalL'auteur Doc Holiday | 2012-02-03