I have a Bean that holds the results. I need to use JSTL to iterate over it and present the results. Here is the bean:
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; }
}
Here is the handler that will set the bean to the JSP:
DetResults results = detDAO.fetchDetResults(paramBean);
request.setAttribute("results", results);
action.setJspURI(".../.jsp");
I tried to display it as follows:
<c:forEach var="results" items="${results}">
    ${results.heading}
</c:forEach>
But it threw the following exception:
Caused by: javax.servlet.ServletException: javax.servlet.jsp.JspTagException: Don't know how to iterate over supplied "items" in <forEach>
If I log the results on my handler page like this:
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) );
}
The logging seems to show fine on the server.
 
     
     
     
    