logic:iterate über ArrayList, die ArrayLists beinhaltet

request.getAttribute() liefert Objekte zurück.
Versuch mal so:
Java:
ArrayList surveyData = (ArrayList) request.getAttribute("surveyBody");
System.out.println(surveyData .size());

ArrayList data1 = (ArrayList)surveyData.get(0);
System.out.println(data1.size());
System.out.println(data1.get(0).getDayProp());
 
Andron, Zeile 1 und 2 laufen - in Zeile 4 (erster Zugriff per "get") gibt es eine

"ServletException in '/tiles/surveyBodyRight.jsp': app.sbRow",

wobei "sbRow" weiter oben noch "surveyBodyOuterRowBean" war. Ist diese Bean falsch programmiert?
 
Zuletzt bearbeitet:
Was wird in Zeile 2 ausgegeben?
Kannst du vielleicht die Fehlermeldung komplett posten?
Wie baust du dir die ArrayLists zusammen?
 
Ich fülle die innere ArrayList testweise wie folgt:
Code:
ArrayList inneral = new ArrayList();
				
sbCol col = new sbCol();
col.setCol("H");
inneral.add(col);
col = new sbCol();
col.setCol("e");
inneral.add(col);
col = new sbCol();
col.setCol("y");
inneral.add(col);

Die äußere:
Code:
ArrayList outeral = new ArrayList();

sbRow row = new sbRow();
row.setRow(inneral);
outeral.add(row);

Dann:
Code:
req.setAttribute("surveyBody", outeral);

Die Zeilen
Code:
ArrayList surveyData = (ArrayList) request.getAttribute("surveyBody");
out.println(surveyData.size());

geben

1

als Ergebnis in der JSP aus.

Catalina.log sagt in Deiner Zeile 4:
Code:
20.12.2007 17:40:47 org.apache.struts.taglib.tiles.InsertTag$InsertHandler doEndTag
SCHWERWIEGEND: ServletException in '/tiles/surveyBodyRight.jsp': app.sbRow
org.apache.jasper.JasperException: Exception in JSP: /tiles/surveyBodyRight.jsp:45

42: 
43: ArrayList surveyData = (ArrayList) request.getAttribute("surveyBody");
44: out.println(surveyData.size());
45: ArrayList data1 = (ArrayList)surveyData.get(0);
46: %>
47: 
48: </table>


Stacktrace:
	at org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:506)
	at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:395)
	at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:314)
	at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:264)
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:252)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
	at org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:672)
	at org.apache.catalina.core.ApplicationDispatcher.doInclude(ApplicationDispatcher.java:574)
	at org.apache.catalina.core.ApplicationDispatcher.include(ApplicationDispatcher.java:499)
	at org.apache.jasper.runtime.JspRuntimeLibrary.include(JspRuntimeLibrary.java:966)
	at org.apache.jasper.runtime.PageContextImpl.include(PageContextImpl.java:602)
	at org.apache.struts.tiles.TilesUtilImpl.doInclude(TilesUtilImpl.java:99)
	at org.apache.struts.tiles.TilesUtil.doInclude(TilesUtil.java:135)
	at org.apache.struts.taglib.tiles.InsertTag.doInclude(InsertTag.java:760)
	at org.apache.struts.taglib.tiles.InsertTag$InsertHandler.doEndTag(InsertTag.java:892)
	at org.apache.struts.taglib.tiles.InsertTag.doEndTag(InsertTag.java:462)
	at org.apache.jsp.pages.surveyLayout_jsp._jspx_meth_tiles_insert_1(surveyLayout_jsp.java:144)
	at org.apache.jsp.pages.surveyLayout_jsp._jspService(surveyLayout_jsp.java:79)
	at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:97)
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
	at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:334)
	at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:314)
	at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:264)
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:252)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
	at org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:672)
	at org.apache.catalina.core.ApplicationDispatcher.processRequest(ApplicationDispatcher.java:463)
	at org.apache.catalina.core.ApplicationDispatcher.doForward(ApplicationDispatcher.java:398)
	at org.apache.catalina.core.ApplicationDispatcher.forward(ApplicationDispatcher.java:301)
	at org.apache.struts.action.RequestProcessor.doForward(RequestProcessor.java:1085)
	at org.apache.struts.tiles.TilesRequestProcessor.doForward(TilesRequestProcessor.java:263)
	at org.apache.struts.tiles.TilesRequestProcessor.processTilesDefinition(TilesRequestProcessor.java:239)
	at org.apache.struts.tiles.TilesRequestProcessor.processForwardConfig(TilesRequestProcessor.java:302)
	at org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:241)
	at org.apache.struts.action.ActionServlet.process(ActionServlet.java:1196)
	at org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:432)
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:709)
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:252)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
	at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:213)
	at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:178)
	at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:126)
	at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:105)
	at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:107)
	at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:148)
	at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:869)
	at org.apache.coyote.http11.Http11BaseProtocol$Http11ConnectionHandler.processConnection(Http11BaseProtocol.java:664)
	at org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:527)
	at org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt(LeaderFollowerWorkerThread.java:80)
	at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:684)
	at java.lang.Thread.run(Unknown Source)

Die Beans sehen wie folgt aus:
Code:
package app;

public class sbCol {
	private String col; // Property of a Day
	
	public void setCol(String col) {
		this.col = col;
	}
	public String getCol() {
		return col;
	}
}

und
Code:
package app;
import java.util.ArrayList;

public class sbRow {
	private ArrayList row; // je eine Datenreihe pro User 
	
	public void setRow(ArrayList row) {
		this.row = row;
	}
	public ArrayList getRow() {
		return row;
	}
}
 
Zuletzt bearbeitet:
Ok, dann schauen wir mal, was da passiert:
Mit
Java:
ArrayList surveyData = (ArrayList) request.getAttribute("surveyBody");
holst du dir die äußere Liste.

Dann holst du dir das erste Element aus der Liste und das ist bei dir vom Typ sbRow nehme ich mal an.
Java:
sbRow sb_row = (sbRow) surveyData.get(0);
Als Anmerkung: die Klassennamen sollten mit einer Großbuchstabe beginnen.

Jetzt holst du mit der Getter-Methode die zweite Liste:
Java:
(ArrayList) innereListe = (ArrayList)sb_row.getRow();

Und jetzt eine Testausgabe:
Java:
System.out.println(innereListe.size());

Hoffe, habe deinen Code richtig verstanden.
 
Grummel :(

Bereits Zeile 2:
Code:
sbRow sb_row = (sbRow) surveyData.get(0);

throws
Code:
20.12.2007 20:01:05 org.apache.struts.taglib.tiles.InsertTag$InsertHandler doEndTag
SCHWERWIEGEND: ServletException in '/tiles/surveyBodyRight.jsp': Unable to compile class for JSP

An error occurred at line: 37 in the jsp file: /tiles/surveyBodyRight.jsp
Generated servlet error:
sbRow cannot be resolved to a type

An error occurred at line: 37 in the jsp file: /tiles/surveyBodyRight.jsp
Generated servlet error:
sbRow cannot be resolved to a type


org.apache.jasper.JasperException: Unable to compile class for JSP

An error occurred at line: 37 in the jsp file: /tiles/surveyBodyRight.jsp
Generated servlet error:
sbRow cannot be resolved to a type

An error occurred at line: 37 in the jsp file: /tiles/surveyBodyRight.jsp
Generated servlet error:
sbRow cannot be resolved to a type


	at org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:512)
	at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:377)
	at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:314)
	at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:264)
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:252)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
	at org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:672)
	at org.apache.catalina.core.ApplicationDispatcher.doInclude(ApplicationDispatcher.java:574)
	at org.apache.catalina.core.ApplicationDispatcher.include(ApplicationDispatcher.java:499)
	at org.apache.jasper.runtime.JspRuntimeLibrary.include(JspRuntimeLibrary.java:966)
	at org.apache.jasper.runtime.PageContextImpl.include(PageContextImpl.java:602)
	at org.apache.struts.tiles.TilesUtilImpl.doInclude(TilesUtilImpl.java:99)
	at org.apache.struts.tiles.TilesUtil.doInclude(TilesUtil.java:135)
	at org.apache.struts.taglib.tiles.InsertTag.doInclude(InsertTag.java:760)
	at org.apache.struts.taglib.tiles.InsertTag$InsertHandler.doEndTag(InsertTag.java:892)
	at org.apache.struts.taglib.tiles.InsertTag.doEndTag(InsertTag.java:462)
	at org.apache.jsp.pages.surveyLayout_jsp._jspx_meth_tiles_insert_1(surveyLayout_jsp.java:144)
	at org.apache.jsp.pages.surveyLayout_jsp._jspService(surveyLayout_jsp.java:79)
	at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:97)
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
	at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:334)
	at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:314)
	at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:264)
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:252)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
	at org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:672)
	at org.apache.catalina.core.ApplicationDispatcher.processRequest(ApplicationDispatcher.java:463)
	at org.apache.catalina.core.ApplicationDispatcher.doForward(ApplicationDispatcher.java:398)
	at org.apache.catalina.core.ApplicationDispatcher.forward(ApplicationDispatcher.java:301)
	at org.apache.struts.action.RequestProcessor.doForward(RequestProcessor.java:1085)
	at org.apache.struts.tiles.TilesRequestProcessor.doForward(TilesRequestProcessor.java:263)
	at org.apache.struts.tiles.TilesRequestProcessor.processTilesDefinition(TilesRequestProcessor.java:239)
	at org.apache.struts.tiles.TilesRequestProcessor.processForwardConfig(TilesRequestProcessor.java:302)
	at org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:241)
	at org.apache.struts.action.ActionServlet.process(ActionServlet.java:1196)
	at org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:432)
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:709)
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:252)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
	at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:213)
	at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:178)
	at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:126)
	at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:105)
	at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:107)
	at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:148)
	at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:869)
	at org.apache.coyote.http11.Http11BaseProtocol$Http11ConnectionHandler.processConnection(Http11BaseProtocol.java:664)
	at org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:527)
	at org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt(LeaderFollowerWorkerThread.java:80)
	at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:684)
	at java.lang.Thread.run(Unknown Source)

Das mit dem Großbuchstaben ist ein Best Practice oder kann das wirklich Fehler verursachen?
 
Könnte es gar etwas mit dem Tiles-Framework zu tun haben, das ich verwende :confused: :confused: :confused:
Code:
20.12.2007 20:01:05 org.apache.struts.taglib.tiles.InsertTag$InsertHandler doEndTag
 
Danke, hat schon etwas weitergeholfen, aber:
Code:
20.12.2007 20:48:46 org.apache.struts.taglib.tiles.InsertTag$InsertHandler doEndTag
SCHWERWIEGEND: ServletException in '/tiles/surveyBodyRight.jsp': Unable to compile class for JSP

An error occurred at line: 38 in the jsp file: /tiles/surveyBodyRight.jsp
Generated servlet error:
Syntax error, insert ";" to complete Statement

An error occurred at line: 38 in the jsp file: /tiles/surveyBodyRight.jsp
Generated servlet error:
Syntax error, insert "AssignmentOperator ArrayInitializer" to complete ArrayInitializerAssignement


org.apache.jasper.JasperException: Unable to compile class for JSP

An error occurred at line: 38 in the jsp file: /tiles/surveyBodyRight.jsp
Generated servlet error:
Syntax error, insert ";" to complete Statement

An error occurred at line: 38 in the jsp file: /tiles/surveyBodyRight.jsp
Generated servlet error:
Syntax error, insert "AssignmentOperator ArrayInitializer" to complete ArrayInitializerAssignement


    at org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:512)
    at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:377)
    at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:314)
    at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:264)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:252)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
    at org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:672)
    at org.apache.catalina.core.ApplicationDispatcher.doInclude(ApplicationDispatcher.java:574)
    at org.apache.catalina.core.ApplicationDispatcher.include(ApplicationDispatcher.java:499)
    at org.apache.jasper.runtime.JspRuntimeLibrary.include(JspRuntimeLibrary.java:966)
    at org.apache.jasper.runtime.PageContextImpl.include(PageContextImpl.java:602)
    at org.apache.struts.tiles.TilesUtilImpl.doInclude(TilesUtilImpl.java:99)
    at org.apache.struts.tiles.TilesUtil.doInclude(TilesUtil.java:135)
    at org.apache.struts.taglib.tiles.InsertTag.doInclude(InsertTag.java:760)
    at org.apache.struts.taglib.tiles.InsertTag$InsertHandler.doEndTag(InsertTag.java:892)
    at org.apache.struts.taglib.tiles.InsertTag.doEndTag(InsertTag.java:462)
    at org.apache.jsp.pages.surveyLayout_jsp._jspx_meth_tiles_insert_1(surveyLayout_jsp.java:144)
    at org.apache.jsp.pages.surveyLayout_jsp._jspService(surveyLayout_jsp.java:79)
    at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:97)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
    at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:334)
    at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:314)
    at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:264)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:252)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
    at org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:672)
    at org.apache.catalina.core.ApplicationDispatcher.processRequest(ApplicationDispatcher.java:463)
    at org.apache.catalina.core.ApplicationDispatcher.doForward(ApplicationDispatcher.java:398)
    at org.apache.catalina.core.ApplicationDispatcher.forward(ApplicationDispatcher.java:301)
    at org.apache.struts.action.RequestProcessor.doForward(RequestProcessor.java:1085)
    at org.apache.struts.tiles.TilesRequestProcessor.doForward(TilesRequestProcessor.java:263)
    at org.apache.struts.tiles.TilesRequestProcessor.processTilesDefinition(TilesRequestProcessor.java:239)
    at org.apache.struts.tiles.TilesRequestProcessor.processForwardConfig(TilesRequestProcessor.java:302)
    at org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:241)
    at org.apache.struts.action.ActionServlet.process(ActionServlet.java:1196)
    at org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:432)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:709)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:252)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:213)
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:178)
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:126)
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:105)
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:107)
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:148)
    at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:869)
    at org.apache.coyote.http11.Http11BaseProtocol$Http11ConnectionHandler.processConnection(Http11BaseProtocol.java:664)
    at org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:527)
    at org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt(LeaderFollowerWorkerThread.java:80)
    at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:684)
    at java.lang.Thread.run(Unknown Source)
Komisch, denn ein ";" fehlt da nicht...
Code:
ArrayList surveyData = (ArrayList) request.getAttribute("surveyBody");
sbRow sb_row = (sbRow) surveyData.get(0);
(ArrayList) innereListe = (ArrayList) sb_row.getRow();
System.out.println(innereListe.size());
 
Versuch mal so:
Java:
ArrayList surveyData = (ArrayList) request.getAttribute("surveyBody");
sbRow sb_row = (sbRow) surveyData.get(0);
ArrayList innereListe = (ArrayList) sb_row.getRow();
System.out.println(innereListe.size());
 

Neue Beiträge

Zurück