You are viewing a plain text version of this content. The canonical link for it is here.
Posted to user@struts.apache.org by "Mathew, Manoj" <Ma...@principal.com> on 2004/04/30 19:03:26 UTC
RE: ArrayList and DynaActionForm--ISSUE TRACKED DOWN--NEED HELP
Little more input to the issue.It's working when i have this . So that mean that the lazyList trick is not working for some reason.see the commented codes....
public class myTestForm extends DynaActionForm {
public void reset(ActionMapping mapping, HttpServletRequest request) {
// List nameList = ListUtils.lazyList(new ArrayList(), new Factory() {
// public Object create() {
// return new String();
// }
// });
List nameList = getMyList();
set("friendName", nameList);
}
private List getMyList() {
List mList = new ArrayList();
for (int i = 0; i < 5; i++) {
mList.add("fakeName");
}return mList;
}
}
Thank-you,
Manoj Mathew
GIS-Systems
(515-362-0539)
-----Original Message-----
From: Hubert Rabago [mailto:jakartauser@yahoo.com]
Sent: Thursday, April 29, 2004 5:03 PM
To: Struts Users Mailing List
Subject: RE: ArrayList and DynaActionForm--need help very badly
Well, I'm back at nothing. Maybe someone else can spot what's happening.
--- "Mathew, Manoj" <Ma...@principal.com> wrote:
> Thanks God. I thought people lost interest in this one and i am left
> alone.Man i am having a tough time with this. All these days because of
> this Indexoutofbond, when evenr we needed a List as form element,we used to
> go for actionForm unnecessary. I thought of cleaning up some code and thats
> how i started this.
>
> <action path="/myOpen"
> type="com.principal.group.acquire.proposal.ui.benefits.MyTestOpenAction"
> name="mytestform" scope="request">
> <forward name="success" path="/myTestJsp.jsp" />
> </action>
> <action path="/mytestjsppostaction"
> type="com.principal.group.acquire.proposal.ui.benefits.MyFormPost"
> name="mytestform" scope="request">
> <forward name="success" path="/myTestJsp.jsp" />
> </action>
>
> open action seems to be working as i am able to see the values populated in
> the open action in the jsp page.
> But when i click on the submit button "mytestjsppostaction.do" is called
> and i have break points in my dynaactionform as wel as in the first line of
> MyFormPost.java. The control first comes to the dyna actionform and then it
> seems like calling beanutil.populate where the exception is thrown. It
> never comes to the MyFormPost.java
>
> Thank-you,
> Manoj Mathew
>
>
> r
> > >
> > > I still get the same and agian nameList = null
> > >
> > > [Servlet Error]-[BeanUtils.populate]:
> > > java.lang.IndexOutOfBoundsException: Index: 4, Size:
> > > 0
> > > at
> > >
> >
> c
> > > Mathew,
> > > Okay, forget about my previous email. Try this
> > > instead. I didn't look at your code that closely
> > > before.
> > >
> > > List mm = new ArrayList();
> > > List nameList = ListUtils.lazyList(mm, new
> > > Factory() {
> > > public Object create() {
> > > return new String();
> > > }
> > > });
> > > set("friendName", nameList);
> > >
> > > Regards,
> > >
> > > Richard
> > >
> > >
> > > 1) define the the
> > > --- "Mathew, Manoj" <Ma...@principal.com>
> > > wrote:
> > > > Richard
> > > > when i use that wasy i get this error
> > > > The following exception was logged
> > > > java.lang.NullPointerException: The type for
> > > > property friendName is invalid
> > > > at
> > > >
> > >
> > org.apache.struts.action.DynaActionForm.set(DynaActionForm.java:414)
> > > >
> > > > struts config
> > > >
> > > > <form-bean name="mytestform"
> > > > type="org.apache.struts.action.DynaActionForm">
> > > > <form-property name="friendName"
> > > >
> > >
> > type="org.apache.commons.collections.ListUtils.LazyList"
> > > > />
> > > >
> > > > Thank-you,
> > > > Manoj Mathew
> > > > GIS-Systems
> > > > (515-362-0539)
> > > >
> > > >
> > > > -----Original Message-----
> > > > From: Richard Yee [mailto:ryee86@yahoo.com]
> > > > Sent: Thursday, April 29, 2004 12:06 PM
> > > > To: Struts Users Mailing List
> > > > Subject: RE: ArrayList and DynaActionForm--need
> > > help
> > > > very badly
> > > >
> > > >
> > > > Mathew,
> > > > I think you are mixing the instructions that
> > > > everyone
> > > > has given you. If you use the LazyList as your
> > > > form-property type in your form-bean, then you
> > > don't
> > > > need to put this code,
> > > > > List mm = new ArrayList();
> > > > > List nameList = ListUtils.lazyList(mm, new
> > > > > Factory() {
> > > > > public Object create() {
> > > > > return "fakeName";
> > > > > }
> > > > > });
> > > > > set("friendName", nameList);
> > > >
> > > > in your reset() method. In fact, you don't have to
> > > > put
> > > > any code that initializes your list because the
> > > > LazyList takes care of that for you.
> > > >
> > > > In the solution I proposed in my previous emails,
> > > I
> > > > told you to put the code in the reset method only
> > > > when
> > > > you are using the plain ArrayList or a simple
> > > array.
> > > > This code is necessary to prevent the index out of
> > > > bounds exception when you use these types with
> > > > indexed
> > > > properties.
> > > >
> > > >
> > > > Regards,
> > > >
> > > > Richard
> > > > --- "Mathew, Manoj" <Ma...@principal.com>
> > > > wrote:
> > > > > Let me explain in detail
> > > > >
> > > > > I have a open action which just populate the
> > > > > list..and forwarded to my jsp
> > > > >
> > > > > public class MyTestOpenAction extends Action {
> > > > > public ActionForward execute(ActionMapping
> > > > mapping,
> > > > > ActionForm frm,
> > > > > javax.servlet.http.HttpServletRequest request,
> > > > > javax.servlet.http.HttpServletResponse response)
> > > > > throws Exception {
> > > > >
> > > > > myTestForm form = (myTestForm) frm;
> > > > > form.set("myName","Manoj Mathew");
> > > > > form.set("friendName", getMyList());
> > > > > return mapping.findForward("success");
> > > > > }
> > > > >
> > > > > private List getMyList() {
> > > > >
> > > > > List myList = new ArrayList();
> > > > > myList.add(0, "Jimmy");
> > > > > myList.add(1, "Tom");
> > > > > myList.add(2, "Jack");
> > > > > myList.add(3, "Jack2");
> > > > > myList.add(4, "Jack3");
> > > > > return myList;
> > > > > }
> > > > >
> > > > > }
> > > > >
> > > > > and my jsp looks like this
> > > > >
> > > > >
> > > > > <html:form method="post"
> > > > > action="mytestjsppostaction.do">
> > > > > <Table>
> > > > > <TR><TD><font color="red" face="bold">My
> > > Friend's
> > > > > List</font></TD></TR>
> > > > > <TR><TD><html:text property="myName"
> > > > maxlength="64"
> > > > > size="50"/></td></TR>
> > > > > <% for(int i=0; i<5; i++){ %>
> > > > > <% String name1 = "friendName[" + i+ "]";%>
> > > > > <tr>
> > > > > <td> My Friend <%= i %></td>
> > > > > <td><html:text property="<%=name1%>"
> > > > maxlength="6"
> > > > > size="6" /></TD>
> > > > > </tr>
> > > > > <% } %>
> > > > > <tr><td><html:submit property="censusSubmit"
> > > > > value="Submit" /> </td></tr>
> > > > > </table>
> > > > > </html:form>
> > > > >
> > > > > and struts config
> > > > > <form-bean name="mytestform"
> > > > >
> > > >
> > >
> > type="com.principal.group.acquire.proposal.ui.benefits.myTestForm">
> > > > > <form-property name="friendName"
> > > > > type="java.util.List" />
>
=== message truncated ===
__________________________________
Do you Yahoo!?
Win a $20,000 Career Makeover at Yahoo! HotJobs
http://hotjobs.sweepstakes.yahoo.com/careermakeover
---------------------------------------------------------------------
To unsubscribe, e-mail: user-unsubscribe@struts.apache.org
For additional commands, e-mail: user-help@struts.apache.org
---------------------------------------------------------------------
To unsubscribe, e-mail: user-unsubscribe@struts.apache.org
For additional commands, e-mail: user-help@struts.apache.org
---------------------------------------------------------------------
To unsubscribe, e-mail: user-unsubscribe@struts.apache.org
For additional commands, e-mail: user-help@struts.apache.org