Yes I have it working and I'm using the beta (i.e. version 1.0-b1).

Not quite sure what you mean by "one level of indirection lower" but my
suggestion is to set the debug level in BeanUtils - which is what
ActionServlet uses to populate the bean - it should give you a whole load of
output telling you what its trying to do - unfortunately its using
System.out.println so it'll come out to the tomcat console.

        BeanUtils.setDebug(1); // its a static method

Otherwise you could try posting your code here and perhaps someone will be
able to spot whats going wrong.

Niall

> -----Original Message-----
> From: Will Spies/Towers Perrin [mailto:[EMAIL PROTECTED]]
> Sent: 09 April 2001 21:30
> To: [EMAIL PROTECTED]
> Cc: [EMAIL PROTECTED]
> Subject: RE: POSTing arrays in struts
>
> That is my situation exactly. I've tried session scope and request scope.
> For request, I did the same exact trick you have here. Both cases it's not
> working for me. My ActionForm is not getting populated at all. I am one
> level of indirection lower than what you have here but same
> concept. If you
> have this working though the problem could just be that I'm messing up
> somewhere and one of my properties is coming back null. I didn't think so
> though. What build are you using?
>
>                                                   To:
> <[EMAIL PROTECTED]>
>                     "Niall Pemberton"             cc:     (bcc:
> Will Spies/Towers Perrin)
>                     <niall.pemberton@btInt        Subject:
> RE: POSTing arrays in struts
>                     ernet.com>
>
>
>
> I don't know if I understand your situation but is this a scope issue?
> Either you use session scope and set up your beanArray before showing the
> form, then when a POST is done Struts will call the appropriate setters on
> the beans in the array. Or you use request scope which is a bit
> more tricky
> because the bean array is empty so Struts can't call the setters. In this
> case I got round this by generating beans as the setters were
> being called:
>
> In my ActionForm class:
>
>   private Vector beanVector;
>
>   public MyBean getBeanVector(int index) {
>     if (beanVector == null)
>       beanVector = new Vector(15, 5);
>
>     if (index+1 > beanVector.size()) {
>       for (int i = beanVector.size(); i < index+1; i++) {
>           beanVector.add(new MyBean());
>       }
>     }
>
>     return (MyBean)beanVector.get(index);
>   }
>
>
> Thus Struts tags:
>      <logic:iterate id="list" name="myForm" property="beanVector">
>         <tr><td><html:text name="list" property="desc"/></td>
>      </logic:iterate>
>
> generates:
>      <input type="text" name="beanVector[0].desc" value="abc"/>
>      <input type="text" name="beanVector[1].desc" value="def"/>
>      <input type="text" name="beanVector[2].desc" value="ghi"/>
>
> Causing Struts to generate the following method call to populate your bean
> array in your ActionForm:
>            getBeanVector(0).setDesc("abc");
>            getBeanVector(1).setDesc("def");
>            getBeanVector(2).setDesc("ghi");
>
>
>
> > -----Original Message-----
> > From: Will Spies/Towers Perrin [mailto:[EMAIL PROTECTED]]
> > Sent: 09 April 2001 20:37
> > To: [EMAIL PROTECTED]
> > Cc: [EMAIL PROTECTED]
> > Subject: RE: POSTing arrays in struts
> >
> >
> > Thanks for your reply. I did see these messages and I'm ok with fixing
> the
> > iterate tag issue. I have a bigger (related) problem.  My problem
> > is when I
> > get a POST struts does not fill in my ActionForm correctly. For
> > example, in
> > your example my LoginForm would not contain a beanArray with 3
> > elements. It
> > would contain 0. Struts is failing to generate the proper
> getter calls as
> > far as I can tell.
> >
> >                                                   To:
> > <[EMAIL PROTECTED]>
> >                     "Niall Pemberton"             cc:     (bcc:
> > Will Spies/Towers Perrin)
> >                     <niall.pemberton@btInt        Subject:
> > RE: POSTing arrays in struts
> >                     ernet.com>
> >
> > This issue has come up quite regularly in the list. I got round this by
> > taking my own copies of struts tags and modifying them so that
> they check
> > if
> > they are contained in an "IterateTag". If they are then I
> > generate the name
> > appropriately using the property from the IterateTag, the current index
> > value and the property from the actual tag. Struts then automatically
> > populates the data back appropriately. You have to do something a bit
> more
> > complex if your using request rather than session scope to generate a
> bean
> > collection but thats the only issue.
> >
> > For Example:
> >     <logic:iterate id="list" name="formExample" property="beanArray">
> >        <tr><td><html:text name="list" property="desc"/></td>
> >     </logic:iterate>
> >
> > generates:
> >     <input type="text" name="beanArray[0].desc" value=".."/>
> >     <input type="text" name="beanArray[1].desc" value=".."/>
> >     <input type="text" name="beanArray[2].desc" value=".."/> etc. etc.
> >
> > With my modified <iterate> and <text> (& BaseFieldTag) tags. This then
> > causes Struts to generate appropriate method calls to populate
> the values
> > back to the form [e.g. formExample.getBeanArray(0).setCode(..) etc.]
> >
> > I detailed this a couple of times as a request but unfortunately so far
> no
> > one has given any feedback. Even if this proposal is no accepted then
> > putting the logic to generate the "name" attribute in separate methods
> > which
> > could be overriden rather than copying the tag and having to change the
> > doStartTag() method would be really useful.
> >
> > Previous messages:
> > http://www.mail-archive.com/struts-user@jakarta.apache.org/msg05231.html
> > http://www.mail-archive.com/struts-dev@jakarta.apache.org/msg00975.html
> >
> > Niall
> >
> > P.S> I also have a similar issue where I want to overide the default
> > behaviour for setting the "value" attribute for another issue.
> >
> > > -----Original Message-----
> > > From: Will Spies/Towers Perrin [mailto:[EMAIL PROTECTED]]
> > > Sent: 09 April 2001 16:13
> > > To: [EMAIL PROTECTED]
> > > Cc: '[EMAIL PROTECTED]'
> > > Subject: RE: POSTing arrays in struts
> > >
> > > I don't really understand why I have to do this. That's a lot of code
> to
> > > write too. The JSP code that I have below actually works on the read.
> > > Struts handles it fine and I see the actual data sitting in the input
> > > control when the form comes up in my browser. If struts can do that, I
> > > can't see why struts can't go the other way and match it up on a
> > > post so my
> > > "form' already has the data way before the 'perform' method is called.
> > >
> > >
> > >                                          To:
> > > "'[EMAIL PROTECTED]'"
> > >                     "Taylor,
> > > <[EMAIL PROTECTED]>
> > >                     Jeremy"              cc:     (bcc: Will
> > > Spies/Towers Perrin)
> > >                     <jtaylor@lehm        Subject:     RE: POSTing
> > > arrays in struts
> > >                     an.COM>
> > >
> > >
> > >
> > > If all your input fields have the same name then when the form is
> > > submitted
> > > there will be a
> > >
> > > in your Action class there will be a method "perform" has takes a
> > > parameter
> > > HttpServletRequest request,
> > >
> > > so, rather than doing
> > > PropertyUtils.copyProperties(user, form);
> > >
> > > do something like
> > >
> > > String[] rows = request.getParameterValues("InputFieldName");
> > > form.setRows(rows);
> > >
> > >
> > > > -----Original Message-----
> > > > From:         Will Spies/Towers Perrin [SMTP:[EMAIL PROTECTED]]
> > > > Sent:         09 April 2001 15:41
> > > > To:           [EMAIL PROTECTED]
> > > > Cc:           '[EMAIL PROTECTED]'
> > > > Subject:           RE: POSTing arrays in struts
> > > >
> > > >
> > > >
> > > > Ok. Now we are talking.
> > > >
> > > > Q1: My save action class DOES work like the example. It gets
> > > the form and
> > > > expects the ActionServlet to fill it up. By the time I get the form,
> > the
> > > > ActionServlet is done with it? How would I change this to
> > work properly
> > > or
> > > > do I need a new version of the util class?
> > > >
> > > > Q2: I was under the impression the html:text tags did not
> > work properly
> > > > inside an iterate tag.
> > > >
> > > >
> > > >
> > > >
> > > >
> > > >
> > > >
> > > >                                          To:
> > > > "'[EMAIL PROTECTED]'"
> > > >                     "Taylor,
> > > <[EMAIL PROTECTED]>
> > > >
> > > >                     Jeremy"              cc:     (bcc: Will
> > Spies/Towers
> > > > Perrin)
> > > >                     <jtaylor@lehm        Subject:     RE: POSTing
> > arrays
> > > > in struts
> > > >                     an.COM>
> > > >
> > > >
> > > >
> > > >                     04/09/01
> > > >
> > > >                     10:32 AM
> > > >
> > > >                     Please
> > > >
> > > >                     respond to
> > > >
> > > >                     struts-user
> > > >
> > > >
> > > >
> > > >
> > > >
> > > >
> > > >
> > > >
> > > > You don't need to generate index properties for the input tags.
> > > > Also, how does your save action class work? If you based it on
> > > the struts
> > > > examples you'll need to
> > > > change it because the util class that copies bean properties
> > won't work
> > > > with
> > > > the array of values for the rows property.
> > > >
> > > > > -----Original Message-----
> > > > > From:         Will Spies/Towers Perrin [SMTP:[EMAIL PROTECTED]]
> > > > > Sent:         09 April 2001 15:13
> > > > > To:           [EMAIL PROTECTED]
> > > > > Cc:           '[EMAIL PROTECTED]'
> > > > > Subject:           RE: POSTing arrays in struts
> > > > >
> > > > >
> > > > >
> > > > > 1. The iterate tag does not generate index properties for the
> > > html_text
> > > > > *input* tag
> > > > > 2. The html:text IS in input tag!
> > > > >
> > > > >
> > > > >
> > > > >
> > > > >
> > > > >
> > > > >
> > > > >
> > > > >
> > > > >
> > > > >                                          To:
> > > > > "'[EMAIL PROTECTED]'"
> > > > >                     "Taylor,
> > > > <[EMAIL PROTECTED]>
> > > > >
> > > > >                     Jeremy"              cc:     (bcc: Will
> > > Spies/Towers
> > > > > Perrin)
> > > > >                     <jtaylor@lehm        Subject:     RE: POSTing
> > > arrays
> > > > > in struts
> > > > >                     an.COM>
> > > > >
> > > > >
> > > > >
> > > > >                     04/09/01
> > > > >
> > > > >                     10:08 AM
> > > > >
> > > > >                     Please
> > > > >
> > > > >                     respond to
> > > > >
> > > > >                     struts-user
> > > > >
> > > > >
> > > > >
> > > > >
> > > > >
> > > > >
> > > > >
> > > > >
> > > > > 1. use the iterate tag to iterate through the rows property
> > > > > 2. nothing happens on post because you have no input tags
> > > > >
> > > > > > -----Original Message-----
> > > > > > From:         Will Spies/Towers Perrin [SMTP:[EMAIL PROTECTED]]
> > > > > > Sent:         09 April 2001 14:35
> > > > > > To:           [EMAIL PROTECTED]
> > > > > > Subject:           POSTing arrays in struts
> > > > > >
> > > > > >
> > > > > >
> > > > > > I've read a couple archived notes on this topic and it's not
> > helping
> > > > me
> > > > > so
> > > > > > here goes.
> > > > > >
> > > > > > I'm trying to post an array of data from my view (JSP) into my
> > bean.
> > > > I'm
> > > > > > having great difficulty. Here is a JSP snipet of what I'm doing:
> > > > > >
> > > > > > <html:form action="/saveEmployees">
> > > > > > <table>
> > > > > >   <tr>
> > > > > >     <td align="left">
> > > > > >       <html:text property="data.rows[1].EmployeeName" size="30"
> > > > > maxlength
> > > > > > ="30"/>
> > > > > >     </td>
> > > > > >   </tr>
> > > > > >   <td align="right">
> > > > > >    <html:submit>
> > > > > >        <bean:message key="button.save"/>
> > > > > >    </html:submit>
> > > > > >   </td>
> > > > > >   <td align="left">
> > > > > >     <html:reset>
> > > > > >         <bean:message key="button.reset"/>
> > > > > >     </html:reset>
> > > > > >     &nbsp;
> > > > > >     <html:cancel>
> > > > > >       <bean:message key="button.cancel"/>
> > > > > >     </html:cancel>
> > > > > >     </td>
> > > > > > </table>
> > > > > > </html:form>
> > > > > >
> > > > > > My form consists of a getData().getRows().EmployeeName.
> > The Rows is
> > > > the
> > > > > > array. I've added the appropriate getRows(int index) and
> > setRows(int
> > > > > > index,
> > > > > > ...). Still, it doesn't work. Upon the post I do not see
> > my getters
> > > > > being
> > > > > > called and I get no data in my corresponding form. Help???
> > > > > >
> > > > > >
> > > > > >
> > > > > >
> > > > > >
> > > > >
> > > > >
> > > > >
> > > > >
> > > >
> > > >
> > > >
> > > >
> > >
> > >
> > >
> > >
> > >
> >
> >
> >
> >
> >
> >
>
>
>
>
>
>

Reply via email to