struts-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Míguel Ángel Mulero Martínez <miguel-angel.mul...@mad.tecsidel.es>
Subject RE: ArrayList disappeared in ActionForm
Date Mon, 18 Nov 2002 15:29:18 GMT
Hi Sri,
>
> Looking at your multibox logic, is the 'rol' property in the
> 'userDataBean' an array of Strings?  This should represent the
> value(s) that the user selects -- so, if the initial setting is
> all boxes un-checked, this will be an empty String[].

Yes, the rol is a String[]. It works OK when I present the HTML form the
first time. Afterwards I can't present it because the rolesPosibles doesn't
exist.

>
> Are you modifying/setting your ArrayList (rolesPossibles) in the
> reset?  I don't see how else it can become null.  This list, as
> you know, represents all the possible checkbox values.

The only thing I modify in the reset is the userDataBean.rol (and I have
tried too to erase the reset function). I modify the roles posibles only in
the set.

>
> I don't know if the above helped.  Another source of information
> is the html-multibox.jsp that is part of the
> struts-exercise-taglib application that ships with Struts.
>
> Sri
>

Thanks for your help. I will take a look to the source of multibox to see if
this help. It's a strange thing that. I've done a lot of HTML forms with
Struts and never had encounter this problems.

Thanks again!
Miguel


>
> -----Original Message-----
> From: Míguel Ángel Mulero Martínez
> [mailto:miguel-angel.mulero@mad.tecsidel.es]
> Sent: Monday, November 18, 2002 2:06 AM
> To: Struts Users Mailing List
> Subject: RE: ArrayList disappeared in ActionForm
>
>
> Hi all!
>
> Thanks to both for your reply. Sorry for my late reply (and my
> poor english) but in the weekend I can't write to the group.
>
> Here some code of my classes (comments are in spanish, sorry):
>
>
> My ActionForm has:
>
> ------------------------------------
> public class FichaUsuarioActionForm extends ActionForm {
>
> ....
>
>
>     /** Datos del usuario */
>
>     private FichaUsuarioDataBean ficha;
>
>     /** Roles posibles para situar en el formulario */
>
>     private ArrayList rolesPosibles;
>
>
>
>     public FichaUsuarioActionForm() {
>
>         log.debug("Constructor iniciado");
>
>         ficha = new FichaUsuarioDataBean();
>
>         log.debug("Constructor finalizado");
>
>     }
>
>
>
>     public FichaUsuarioDataBean getUserDataBean() {
>
>         log.debug("getUserDataBean ejecutado");
>
>         return ficha;
>
>     }
>
>
>
>     public void setUserDataBean(FichaUsuarioDataBean user) {
>
>         log.debug("setLoginDataBean ejecutado");
>
>         ficha = user;
>
>     }
>
>
>
>     public ArrayList getRolesPosibles() {
>
>         log.debug("getRolesPosibles ejecutado");
>
>         return rolesPosibles;
>
>     }
>
>
>
>     public void setRolesPosibles(ArrayList _roles) {
>
>         log.debug("setRolesPosibles ejecutado");
>
>         rolesPosibles = _roles;
>
>     }
>
> .....
>
> }
>
> -----------
>
>
> ficha is used to retrieve the values of a HTML form.
> rolesPosibles is an ArrayList that I must use in the same HTML
> form (in a multicheck tag). They are private, so I must set its
> values using the setXXXX function, and this function writes to
> the log a message. The constructor writes to the log too.
>
>
> In the Action before the HTML form, I use the setRolesPosibles()
> to put an inicial ArrayList.
>
> My HTML form is in the way (login/editarUsuario.jsp):
>
> --------------
>
> <html:form action="/modificaUsuarioAction.do"
> focus="userDataBean.user" enctype="multipart/form-data">
>
>     <html:text name="fichaUsuario" property="userDataBean.user"
> size="60" />
>
>     ......
>
> <logic:iterate name="fichaUsuario" property="rolesPosibles"
> id="elementoListadoRoles">
>
>     <html:multibox name="fichaUsuario" property="userDataBean.rol">
>
>         <bean:write name="elementoListadoRoles" property="string1"/>
>
>     </html:multibox>
>
>     <bean:write name="elementoListadoRoles" property="string2" /><br>
>
> </logic:iterate>
>
> ......
>
> ------------
>
>
> So I use the rolesPosibles to put a list of checkbox in my HTML
> form. The struts-config.xml is like:
>
> -----------
>
>
>
> ....
>
>     <form-bean      name="fichaUsuario"
>
>
> type="es.mulria.bonsai.login.actionform.FichaUsuarioActionForm"/>
>
> ....
>
>   <action    path="/modificaUsuarioAction"
>
>          type="es.mulria.bonsai.login.action.ModificarUsuariosAction"
>
>          name="fichaUsuario"
>
>          input="/login/editarUsuario.jsp"
>
>          validate="true">
>
>   </action>
>
> ...
>
> -----------
>
>
> My problem is that if the validate() of the ActionForm has
> errors, and returns to the HTML form, the ArrayList rolesPosibles
> has disappear (null), but the ficha not, and has all the values
> the user puts in the HTML form. The log is like (I only put the
> ActionForm log):
>
> ----------
>
>
>
> # The Action before the JSP creates the ActionForm with the
> ArrayList, and puts it in the request
>
> 15 nov 2002 19:25:54,280 [Thread-7] DEBUG
> es.mulria.bonsai.login.actionform.FichaUsuarioActionForm  -
> Constructor iniciado
>
> 15 nov 2002 19:25:54,280 [Thread-7] DEBUG
> es.mulria.bonsai.login.actionform.FichaUsuarioActionForm  -
> Constructor finalizado
>
> 15 nov 2002 19:25:54,340 [Thread-7] DEBUG
> es.mulria.bonsai.login.actionform.FichaUsuarioActionForm  -
> setRolesPosibles ejecutado
>
> ....
>
>
>
> # Here rolesPosibles has an ArrayList. I can see it if I print it
> in the log.
>
>
>
> # Now, the JSP prints all the values in the HTML form (they are
> in the UserDataBean
>
> 15 nov 2002 19:25:54,431 [Thread-7] DEBUG
> es.mulria.bonsai.login.actionform.FichaUsuarioActionForm  -
> getUserDataBean ejecutado
>
> 15 nov 2002 19:25:54,511 [Thread-7] DEBUG
> es.mulria.bonsai.login.actionform.FichaUsuarioActionForm  -
> getUserDataBean ejecutado
>
> ....
>
>
>
> # To put the list of checkbox in the page, it calls the ArrayList
>
> 15 nov 2002 19:25:54,561 [Thread-7] DEBUG
> es.mulria.bonsai.login.actionform.FichaUsuarioActionForm  -
> getRolesPosibles ejecutado
>
> ....
>
>
>
> # All OK, the ArrayList continues in the ActionForm, and the JSP
> is displayed.
>
>
>
> # Now, I submit it. Struts takes the UserDataBean to put the
> values, the problem is that now, the ArrayList doesn't exist (is
> null), Without calling the constructor and without calling the
> setXXXXX (the log don't appear). How can Struts change the
> ArrayList without calling any of that? Of course, the others
> functions in the class don't use the ArrayList for nothing.
>
>
>
> 15 nov 2002 19:26:50,301 [Thread-7] DEBUG
> es.mulria.bonsai.login.actionform.FichaUsuarioActionForm  -
> getUserDataBean ejecutado
>
> -------
>
> So, if the validate has some error and returns to the JSP, it has
> an error when tries to retrieve the ArrayList of checkbox (null).
>
>
> Some idea? Thanks for read all this (and sorry for my english)
>
>
> Miguel
>
> -----Mensaje original-----
> De: shirishchandra.sakhare@ubs.com [mailto:shirishchandra.sakhare@ubs.com]
> Enviado el: viernes, 15 de noviembre de 2002 15:48
> Para: struts-user@jakarta.apache.org
> Asunto: RE: ArrayList disappeared in ActionForm
>
>
> Hi,
> I didnt understand your problem very well.But some points U should know.
>
> > I use the log4j, and the constructor of the ActionForm isn't called.
> > The setXXXX for the ArrayList isn't called too.
>
> Struts uuses Class.forName() .newInstance() to instantiate new
> form objects. So the default constructor will be called in this
> case.So Any lists etc u need to set must Be initialised in the
> default constructor.
>
> -----Original Message-----
> From: Sri.Sankaran [mailto:Sri.Sankaran@sas.com]
> Sent: Friday, November 15, 2002 3:18 PM
> To: struts-user
> Subject: RE: ArrayList disappeared in ActionForm
>
>
> Intermixed...
>
> > -----Original Message-----
> > From: Míguel Ángel Mulero Martínez
> > [mailto:miguel-angel.mulero@mad.tecsidel.es]
> > Sent: Friday, November 15, 2002 2:03 AM
> > To: Lista Struts
> > Subject: ArrayList disappeared in ActionForm
> >
> >
> > Hi all! I've got a little problem with Struts 1.0.2.
> >
> > I've got an ActionForm with two objects: one for save the values of a
> > HTML form, and an ArrayList with Strings to print in the HTML form.
>
> I don't follow.  Why do you need separate objects for display and
> for capture. That  is the purpose of the ActionForm.
>
> >
> > The HTML form inits well, reading the values (object and
> > ArrayList) from the ActionForm created in an Action before. When I
> > press the submit button, the reset function is called and afterwards
> > the object is updated with the new values. My problem is that if I
> > read the ArrayList, it is null.
>
> How do the objects in your ActionForm map to your ArrayList.
> Need to see some code.  Send appropriate sections of your JSP,
> form-bean (ActionForm) and Action class.
>
> >
> > I use the log4j, and the constructor of the ActionForm isn't called.
> > The setXXXX for the ArrayList isn't called too.
> >
> > Where is my ArrayList? Why it's null?
> >
> > Thanks to all!
> >
> > Miguel
> >
>
> Sri
>
> >
> >
> > --
> > To unsubscribe, e-mail:
> > <mailto:struts-user-> unsubscribe@jakarta.apache.org>
> > For
> > additional commands,
> > e-mail: <mailto:struts-user-help@jakarta.apache.org>
> >
> >
>
> --
> To unsubscribe, e-mail:
> <mailto:struts-user-unsubscribe@jakarta.apache.org>
> For additional commands, e-mail:
> <mailto:struts-user-help@jakarta.apache.org>
>
>
>
> --
> To unsubscribe, e-mail:
> <mailto:struts-user-unsubscribe@jakarta.apache.org>
> For additional commands, e-mail:
> <mailto:struts-user-help@jakarta.apache.org>
>
>
> --
> To unsubscribe, e-mail:
> <mailto:struts-user-unsubscribe@jakarta.apache.org>
> For additional commands, e-mail:
> <mailto:struts-user-help@jakarta.apache.org>
>
>
> --
> To unsubscribe, e-mail:
> <mailto:struts-user-unsubscribe@jakarta.apache.org>
> For additional commands, e-mail:
> <mailto:struts-user-help@jakarta.apache.org>


--
To unsubscribe, e-mail:   <mailto:struts-user-unsubscribe@jakarta.apache.org>
For additional commands, e-mail: <mailto:struts-user-help@jakarta.apache.org>


Mime
View raw message