Yanhui,
I too am still having this problem. When there is data in the Collection,
_it works_. When no data/empty, I get the JspException: No collection found
error - even when wrapped with present tag. Hard to believe we're the only
ones having this issue. Makes me think it's us, but what could it be?
Frag from JSP:
<logic:present name="OrderForm" property="svcEquips"/>
<logic:iterate name="OrderForm" property="svcEquips" id="svcEquip">
<bean:write name="svcEquip" property="some key"/>
</logic:iterate>
<logic:present/>
The parent form (OrderForm):
.....
public void
setSvcEquips(com.frontiercorp.bss.cap.proto.bpo.web.OrderSvcEquipForm[]
svcEquips)
{ this.svcEquips = svcEquips; }
public com.frontiercorp.bss.cap.proto.bpo.web.OrderSvcEquipForm[]
getSvcEquips()
{ return svcEquips; }
....
}
(Most of) the stack trace:
13:19:09,557 ERROR [EmbeddedCatalinaServiceSX] ----- Root Cause -----
javax.servlet.jsp.JspException: No collection found
at
org.apache.struts.taglib.logic.IterateTag.doStartTag(IterateTag.java:305)
at
org.apache.jsp.oe_0005fsvcequip$jsp._jspService(oe_0005fsvcequip$jsp.java:22
0)
at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:107)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
at
org.apache.jasper.servlet.JspServlet$JspServletWrapper.service(JspServlet.ja
va:202)
at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:382)
at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:474)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
at
org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.
java:683) at
org.apache.catalina.core.ApplicationDispatcher.doForward(ApplicationDispatch
er.java:431)
at
org.apache.catalina.core.ApplicationDispatcher.forward(ApplicationDispatcher
.java:355)
at
org.apache.struts.action.ActionServlet.processActionForward(ActionServlet.ja
va:1759)
at org.apache.struts.action.ActionServlet.process(ActionServlet.java:1596)
at org.apache.struts.action.ActionServlet.doGet(ActionServlet.java:492)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:740)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
at
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(Application
FilterChain.java:247)
Anyone have any clues? This is Struts 1.0.2.
Frustrated,
Mike
-----Original Message-----
From: Yu, Yanhui [mailto:[EMAIL PROTECTED]]
Sent: Thursday, March 28, 2002 2:13 PM
To: '[EMAIL PROTECTED]'
Subject: RE: Struts 1.0.2 checkbox - Error Message: No collection found
Thanks for quite a few very kind people who spent a lot of time trying to
help, but I've not found the solution yet. Here is our problem again,
please help us if you find a way to solve this problem:
1. There is a class called ConflictBean which has a few String attributes
and a boolean attribute called isChecked to record if the jsp user checked
this bean.
2. The Action constructs a few of these ConflictBean objects, stores them in
an ArrayList, then sets this ArrayList in the ActionForm bean.
3. The JSP page iterates through the ArrayList to build a table so that each
row of this table represents an element on the ArrayList (a ConflictBean
object). All the attributes of the ArrayList element, the ConflictBean
object are displayed in different column (cells) of this row. A checkbox is
provided somewhere in each row (say in the most left column) so that the
user can view all the rows, then he can select all/some/none of the rows
(the ConflictBean objects). After the form was submitted, the Action needs
to get the list back out and see which ConflictBean were checked.
Please tell us if we have to use an indexed property such as the checkbox in
the newer version to accomplish this or there is a way to do it with version
1.0.2? Answering this question will point us to the right direction.
THANKS!
Yanhui
-----Original Message-----
From: Yu, Yanhui
Sent: Wednesday, March 27, 2002 12:03 PM
To: '[EMAIL PROTECTED]'
Subject: RE: Struts 1.0.2 checkbox - Error Message: No collection found
Sorry I forgot that the reset method in the ActionForm looks like this:
==============================================================
public void reset(ActionMapping mapping, HttpServletRequest request)
{
cat.debug("ConflictResolutionForm reset");
/*
this.checked = false;
this.linenum = null;
this.field = null;
this.level = null;
this.currentValue = null;
this.overrideValue = null;
*/
if(conflicts != null) {
for(int i=0; i< conflicts.size(); i++) {
((ConflictBean) conflicts.get(i)).setChecked(false);
}
}
}
==============================================================
Looking forward to hearing any hints, thank you very much,
Yanhui
-----Original Message-----
From: Yu, Yanhui
Sent: Wednesday, March 27, 2002 12:00 PM
To: [EMAIL PROTECTED]
Subject: Struts 1.0.2 checkbox - Error Message: No collection found
Hi All,
We are using struts verions 1.0.2 here. I have a problem using checkbox in
a jsp, getting No collection found error. Here is my sample code and I
really appreciate if anyone can give me a hand on this.
in jsp
=====================================
<logic:iterate id="conflicts" name="ConflictResolutionForm"
property="conflicts"
type="com.pioneer.sales.terrmaint.demo.ConflictBean">
<tr>
<td><html:checkbox name="conflicts" property="checked"
/></td>
<td><bean:write name="conflicts" property="field" /> </td>
<td><bean:write name="conflicts" property="level" /> </td>
<td><bean:write name="conflicts" property="currentValue"
/></td>
<td><bean:write name="conflicts" property="overrideValue" />
</td>
</tr>
</logic:iterate>
=======================================
in ConflictBean class
========================================
private String linenum = null;
private String field = null;
private String level = null;
private String currentValue = null;
private String overrideValue = null;
private boolean checked = false;
// all public getters and setters for all the String attributes
public boolean getChecked() {
return checked;
}
public void setChecked(boolean _checked){
checked = _checked;
}
==================================================
in Action class
==================================================
ConflictResolutionForm conFlictForm = new ConflictResolutionForm();
ArrayList conflicts = new ArrayList();
// Fill in the list here
ConflictBean cb = new ConflictBean();
cb.setLinenum("1");
cb.setField("Field 1");
cb.setLevel("Area");
cb.setCurrentValue("012345678");
cb.setOverrideValue("012345678");
conflicts.add(cb);
conFlictForm.setConflicts(conflicts);
return (mapping.findForward("conflictresolution")); //set up in
struts-config.xml
====================================================
in ActionForm
=====================================================
private ArrayList conflicts = null;
public ArrayList getConflicts() {
return conflicts;
}
public void setConflicts(ArrayList _conflicts) {
conflicts = _conflicts;
}
public ConflictBean getConflicts(int index) {
return (ConflictBean) conflicts.get(index);
}
public void setConflicts(int index, ConflictBean conflict) {
conflicts.set(index,conflict);
}
======================================================
Any help would be greatly appreciated. What I did wrong here? Maybe
multibox is what I need?
Yanhui
--
To unsubscribe, e-mail:
<mailto:[EMAIL PROTECTED]>
For additional commands, e-mail:
<mailto:[EMAIL PROTECTED]>
--
To unsubscribe, e-mail: <mailto:[EMAIL PROTECTED]>
For additional commands, e-mail: <mailto:[EMAIL PROTECTED]>