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 Thu, 21 Nov 2002 07:10:40 GMT
Hi all. I don't have find anything in the sources.
I have made a "little ugly patch" to my application. If in the validate I
have errors and must return to the HTML. I reload the ArrayList from the
database. Doing this, I have found one thing more:
- I arrive to the HTML form. I press submit. If the validate has errors, I
reload the ArrayList from database. I return to the HTML form.
- I submit the HTML form again. This time THE ARRAYLIST HAVEN'T DISAPPEARED.

I don't know why, but only disappear the first time I submit the form. Some
idea? (apart from a bug of garbage collector)

Thanks to all!

> -----Mensaje original-----
> De: Míguel Ángel Mulero Martínez
> [mailto:miguel-angel.mulero@mad.tecsidel.es]
> Enviado el: lunes, 18 de noviembre de 2002 16:29
> Para: Struts Users Mailing List
> Asunto: RE: ArrayList disappeared in ActionForm
>
>
> 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>


--
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