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: [EMAIL PROTECTED]
[mailto:[EMAIL PROTECTED]]
Enviado el: viernes, 15 de noviembre de 2002 15:48
Para: [EMAIL PROTECTED]
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:[EMAIL PROTECTED]]
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:[EMAIL PROTECTED]]
> 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-> [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]>



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

Reply via email to