• Post Reply Bookmark Topic Watch Topic
  • New Topic
programming forums Java Mobile Certification Databases Caching Books Engineering Micro Controllers OS Languages Paradigms IDEs Build Tools Frameworks Application Servers Open Source This Site Careers Other Pie Elite all forums
this forum made possible by our volunteer staff, including ...
Marshals:
  • Campbell Ritchie
  • Jeanne Boyarsky
  • Ron McLeod
  • Paul Clapham
  • Liutauras Vilda
Sheriffs:
  • paul wheaton
  • Rob Spoor
  • Devaka Cooray
Saloon Keepers:
  • Stephan van Hulst
  • Tim Holloway
  • Carey Brown
  • Frits Walraven
  • Tim Moores
Bartenders:
  • Mikalai Zaikin

Cannot create iterator for this...ArrayList()...

 
Ranch Hand
Posts: 57
  • Mark post as helpful
  • send pies
    Number of slices to send:
    Optional 'thank-you' note:
  • Quote
  • Report post to moderator
Help please!

Process flow
============
Index.jsp is supposed to execute the getCustomer() method in customerAction class. The customerAction is supposed to put a customers ArrayList object in the request scope. the customer.jsp screen is supposed to iterate through the customer ArrayList object that was placed in the request scope and display the data in their respective fields.

My objective is to display the data brought back from the database.

When I debugged CustomerAction class with these lines of code:

Iterator i = customers.iterator();
while( i.hasNext() ){
System.out.println( "((CustomerBean)i.next()).getFirstName(): " + ((CustomerBean)i.next()).getFirstName() );
}

, I got the following out from the Arraylist object that is placed the the request scope:

((CustomerBean)i.next()).getFirstName(): OLA
((CustomerBean)i.next()).getFirstName(): OLATEST
((CustomerBean)i.next()).getFirstName(): SAUD

Please tell me the cause of the error and how to work round it. In any case, is there a more efficient way of achieving my objective?

Thanks.

Ola Oke
Error
=====
When I execute/run index.jsp screen I get the error below:

org.apache.jasper.JasperException: Cannot create iterator for this collection
at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:254)
at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:295)
at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:241)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
at org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:684)
at org.apache.catalina.core.ApplicationDispatcher.doForward(ApplicationDispatcher.java:432)
at org.apache.catalina.core.ApplicationDispatcher.forward(ApplicationDispatcher.java:356)
at org.apache.struts.action.RequestProcessor.doForward(RequestProcessor.java:1069)
at org.apache.struts.action.RequestProcessor.processForwardConfig(RequestProcessor.java:455)
...



JSP FILES:
==========

index.jsp (This is the JSP the processing that leads to the error):
===================================================================
<%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic" %>
<jsp:forward page="/customer.do?methodToExecute=getCustomer"/>




customer.jsp:
=============
<%@ page language="java" %>
<%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %>
<%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic" %>
<%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %>

<html>
..........
..........
...
<html:form action="/customer"
name="CustomerForm"
type="com.cargo.gen.CustomerForm" >
.........
.........
...
<logic:iterate id="customer" name="customers">
<tr align="left">
<td><bean:write name="customer" property="customerNo"/>:</td>
<td><bean:write name="customer" property="firstName"/>:</td>
</tr>
</logic:iterate>
..........
..........
...
</html>






struts-config.xml file:
=======================
<?xml version="1.0" encoding="ISO-8859-1" ?>

<!DOCTYPE struts-config PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 1.1//EN"
"http://jakarta.apache.org/struts/dtds/struts-config_1_1.dtd">







<struts-config>


<!-- ==================================== Data Source Configuration -->


<data-sources>
<data-source type="org.apache.commons.dbcp.BasicDataSource">
<set-property property="driverClassName" value="com.mysql.jdbc.Driver" />
<set-property property="url" value="jdbc:mysql://localhost/cargo" />
<set-property property="username" value="ola" />
<set-property property="password" value="ola" />
</data-source>
</data-sources>



<!-- ======================================== Form Bean Definitions -->



<form-beans>
<form-bean name="customerForm" type="com.cargo.gen.CustomerForm"/>
</form-beans>



<global-forwards>
<forward name="cust" path="/customer"/>
</global-forwards>

<action-mappings>
<action path="/customer"
type="com.cargo.gen.CustomerAction"
name="customerForm"
scope="request"
parameter="methodToExecute">
<forward name="success" path="/jsp/customer.jsp"/>
<forward name="failure" path="/jsp/failure.jsp"/>
</action>
</action-mappings>


<message-resources parameter="com.cargo.resources.application"/>

</struts-config>



Action Class:
=============
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.struts.action.Action;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.DynaActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;
import org.apache.struts.actions.DispatchAction;

import java.util.ArrayList;
import java.util.Iterator;


public class CustomerAction extends DispatchAction {

public ActionForward getCustomer(ActionMapping mapping,
ActionForm form,
HttpServletRequest request,
HttpServletResponse response) throws Exception {

DbInterface dbInterface = new DbInterface();
ArrayList customers = dbInterface.getCustomer( getDataSource(request) );
request.setAttribute("customers", "customers");


Iterator i = customers.iterator();
while( i.hasNext() ){
System.out.println( "((CustomerBean)i.next()).getFirstName(): " + ((CustomerBean)i.next()).getFirstName() );
}


return mapping.findForward("success");
}

..........
..........
...

}
 
With a little knowledge, a cast iron skillet is non-stick and lasts a lifetime.
reply
    Bookmark Topic Watch Topic
  • New Topic