You are viewing a plain text version of this content. The canonical link for it is here.
Posted to user@struts.apache.org by fea jabi <zy...@hotmail.com> on 2006/01/03 19:22:00 UTC

reset method in ActionForm

When exactly this method has to be used and when does this get called?

Why do the checkboxes have to be reset?

Prepopulating the formbean is done in Action class. hence, it's not clear to 
me the exact use of using the reset method.

Thanks.

_________________________________________________________________
Is your PC infected? Get a FREE online computer virus scan from McAfeeŽ 
Security. http://clinic.mcafee.com/clinic/ibuy/campaign.asp?cid=3963


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


Re: reset method with DyanValidatorForm

Posted by fea jabi <zy...@hotmail.com>.
Great. thanks a lot for your help.


>From: "Wendy Smoak" <ws...@gmail.com>
>Reply-To: "Struts Users Mailing List" <us...@struts.apache.org>
>To: "Struts Users Mailing List" <us...@struts.apache.org>
>Subject: Re: reset method with DyanValidatorForm
>Date: Wed, 1 Nov 2006 08:21:41 -0700
>
>On 11/1/06, fea jabi <zy...@hotmail.com> wrote:
>
>>may I know the reason why do we have to use Serializable in the below.
>
>> >package com.example.myapp;
>> >public final class AccountForm extends DynaValidatorActionForm
>> >implements Serializable {...}
>
>You don't.  DynaValidatorActionForm is already Serializable.
>
>http://struts.apache.org/1.2.9/api/org/apache/struts/validator/DynaValidatorActionForm.html
>
>http://java.sun.com/docs/books/jls/second_edition/html/interfaces.doc.html
>
>--
>Wendy
>
>---------------------------------------------------------------------
>To unsubscribe, e-mail: user-unsubscribe@struts.apache.org
>For additional commands, e-mail: user-help@struts.apache.org
>

_________________________________________________________________
All-in-one security and maintenance for your PC.  Get a free 90-day trial! 
http://clk.atdmt.com/MSN/go/msnnkwlo0050000002msn/direct/01/?href=http://www.windowsonecare.com/?sc_cid=msn_hotmail


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


Re: reset method with DyanValidatorForm

Posted by Wendy Smoak <ws...@gmail.com>.
On 11/1/06, fea jabi <zy...@hotmail.com> wrote:

> may I know the reason why do we have to use Serializable in the below.

> >package com.example.myapp;
> >public final class AccountForm extends DynaValidatorActionForm
> >implements Serializable {...}

You don't.  DynaValidatorActionForm is already Serializable.

http://struts.apache.org/1.2.9/api/org/apache/struts/validator/DynaValidatorActionForm.html

http://java.sun.com/docs/books/jls/second_edition/html/interfaces.doc.html

-- 
Wendy

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


Re: reset method with DyanValidatorForm

Posted by Niall Pemberton <ni...@gmail.com>.
Woops, sorry download link should have been:

http://struts.apache.org/downloads.html

On 11/1/06, Niall Pemberton <ni...@gmail.com> wrote:
> On 11/1/06, fea jabi <zy...@hotmail.com> wrote:
> > Thanks. This forum has been great help to me.
> >
> > we are using 1.2.7 so, can't use this nice feature yet.
> >
> > But where can I get the new features added after 1.2.7 version from?
>
> Its in the Struts 1.3.x series - the only "ga" (or production) quality
> version is Struts 1.3.5 - so if you were looking to upgrade from 1.2.x
> - that is currently the best option. You can download it here:
>   http://download.java.net/jdk6/docs/api/
>
> Notes on Upgrading to 1.3.x are here:
>   http://wiki.apache.org/struts/StrutsUpgrade
>
> Niall
>
> > >From: "Niall Pemberton" <ni...@gmail.com>
> > >Date: Wed, 1 Nov 2006 15:35:44 +0000
> > >
> > >On 1/6/06, Wendy Smoak <ws...@gmail.com> wrote:
> > >>On 1/6/06, fea jabi <zy...@hotmail.com> wrote:
> > >>
> > >> > So, I might have to reset the checkboxes now.
> > >> >
> > >> > Do, I have no other choice but to create a formbean Class with all the
> > >> > setter's and getter's and then add reset method too for it.
> > >> >
> > >> > or is there an easier way to do this using DynaValidatorForm?
> > >>
> > >>You don't have to add the get/set methods.  Just extend
> > >>DynaValidatorForm and add the reset method -- then be sure to change
> > >>the type of the form in struts-config.xml to your new form type.
> > >>
> > >>package com.example.myapp;
> > >>public final class AccountForm extends DynaValidatorActionForm
> > >>implements Serializable {...}
> > >>
> > >>        <form-bean
> > >>             name="accountForm"
> > >>             type="com.example.myapp.AccountForm">
> > >
> > >Hubert added a new feature in Struts 1.3.x that allows you to
> > >configure "reset" behaviour on a property-by-property basis in the
> > >struts-config.xml - I believe you just  add reset="true" attributes to
> > >your <form-property> elements and it will reset the values to whatever
> > >is (or isn't) specified by the "initial" attribute. Something like the
> > >following:
> > >
> > ><form-beans>
> > >
> > >    <form-bean  name="fooForm"
> > >type="org.apache.struts.action.DynaActionForm">
> > >        <form-property name="state"  type="java.lang.String"
> > >initial="INITIAL" reset="true"/>
> > >        <form-property name="unsubscribe" type="java.lang.String"
> > >initial="true" reset="true"/>
> > >    </form-bean>
> > >
> > >  </form-beans>
> > >
> > >Niall
> > >
> > >>--
> > >>Wendy
>

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


Re: reset method with DyanValidatorForm

Posted by Niall Pemberton <ni...@gmail.com>.
On 11/1/06, fea jabi <zy...@hotmail.com> wrote:
> Thanks. This forum has been great help to me.
>
> we are using 1.2.7 so, can't use this nice feature yet.
>
> But where can I get the new features added after 1.2.7 version from?

Its in the Struts 1.3.x series - the only "ga" (or production) quality
version is Struts 1.3.5 - so if you were looking to upgrade from 1.2.x
- that is currently the best option. You can download it here:
  http://download.java.net/jdk6/docs/api/

Notes on Upgrading to 1.3.x are here:
  http://wiki.apache.org/struts/StrutsUpgrade

Niall

> >From: "Niall Pemberton" <ni...@gmail.com>
> >Date: Wed, 1 Nov 2006 15:35:44 +0000
> >
> >On 1/6/06, Wendy Smoak <ws...@gmail.com> wrote:
> >>On 1/6/06, fea jabi <zy...@hotmail.com> wrote:
> >>
> >> > So, I might have to reset the checkboxes now.
> >> >
> >> > Do, I have no other choice but to create a formbean Class with all the
> >> > setter's and getter's and then add reset method too for it.
> >> >
> >> > or is there an easier way to do this using DynaValidatorForm?
> >>
> >>You don't have to add the get/set methods.  Just extend
> >>DynaValidatorForm and add the reset method -- then be sure to change
> >>the type of the form in struts-config.xml to your new form type.
> >>
> >>package com.example.myapp;
> >>public final class AccountForm extends DynaValidatorActionForm
> >>implements Serializable {...}
> >>
> >>        <form-bean
> >>             name="accountForm"
> >>             type="com.example.myapp.AccountForm">
> >
> >Hubert added a new feature in Struts 1.3.x that allows you to
> >configure "reset" behaviour on a property-by-property basis in the
> >struts-config.xml - I believe you just  add reset="true" attributes to
> >your <form-property> elements and it will reset the values to whatever
> >is (or isn't) specified by the "initial" attribute. Something like the
> >following:
> >
> ><form-beans>
> >
> >    <form-bean  name="fooForm"
> >type="org.apache.struts.action.DynaActionForm">
> >        <form-property name="state"  type="java.lang.String"
> >initial="INITIAL" reset="true"/>
> >        <form-property name="unsubscribe" type="java.lang.String"
> >initial="true" reset="true"/>
> >    </form-bean>
> >
> >  </form-beans>
> >
> >Niall
> >
> >>--
> >>Wendy

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


Re: reset method with DyanValidatorForm

Posted by fea jabi <zy...@hotmail.com>.
Thanks. This forum has been great help to me.

we are using 1.2.7 so, can't use this nice feature yet.

But where can I get the new features added after 1.2.7 version from?


>From: "Niall Pemberton" <ni...@gmail.com>
>Reply-To: "Struts Users Mailing List" <us...@struts.apache.org>
>To: "Struts Users Mailing List" <us...@struts.apache.org>
>Subject: Re: reset method with DyanValidatorForm
>Date: Wed, 1 Nov 2006 15:35:44 +0000
>
>On 1/6/06, Wendy Smoak <ws...@gmail.com> wrote:
>>On 1/6/06, fea jabi <zy...@hotmail.com> wrote:
>>
>> > So, I might have to reset the checkboxes now.
>> >
>> > Do, I have no other choice but to create a formbean Class with all the
>> > setter's and getter's and then add reset method too for it.
>> >
>> > or is there an easier way to do this using DynaValidatorForm?
>>
>>You don't have to add the get/set methods.  Just extend
>>DynaValidatorForm and add the reset method -- then be sure to change
>>the type of the form in struts-config.xml to your new form type.
>>
>>package com.example.myapp;
>>public final class AccountForm extends DynaValidatorActionForm
>>implements Serializable {...}
>>
>>        <form-bean
>>             name="accountForm"
>>             type="com.example.myapp.AccountForm">
>
>Hubert added a new feature in Struts 1.3.x that allows you to
>configure "reset" behaviour on a property-by-property basis in the
>struts-config.xml - I believe you just  add reset="true" attributes to
>your <form-property> elements and it will reset the values to whatever
>is (or isn't) specified by the "initial" attribute. Something like the
>following:
>
><form-beans>
>
>    <form-bean  name="fooForm" 
>type="org.apache.struts.action.DynaActionForm">
>        <form-property name="state"  type="java.lang.String"
>initial="INITIAL" reset="true"/>
>        <form-property name="unsubscribe" type="java.lang.String"
>initial="true" reset="true"/>
>    </form-bean>
>
>  </form-beans>
>
>Niall
>
>>--
>>Wendy
>
>---------------------------------------------------------------------
>To unsubscribe, e-mail: user-unsubscribe@struts.apache.org
>For additional commands, e-mail: user-help@struts.apache.org
>

_________________________________________________________________
Get FREE company branded e-mail accounts and business Web site from 
Microsoft Office Live 
http://clk.atdmt.com/MRT/go/mcrssaub0050001411mrt/direct/01/


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


Re: reset method with DyanValidatorForm

Posted by Niall Pemberton <ni...@gmail.com>.
On 1/6/06, Wendy Smoak <ws...@gmail.com> wrote:
> On 1/6/06, fea jabi <zy...@hotmail.com> wrote:
>
> > So, I might have to reset the checkboxes now.
> >
> > Do, I have no other choice but to create a formbean Class with all the
> > setter's and getter's and then add reset method too for it.
> >
> > or is there an easier way to do this using DynaValidatorForm?
>
> You don't have to add the get/set methods.  Just extend
> DynaValidatorForm and add the reset method -- then be sure to change
> the type of the form in struts-config.xml to your new form type.
>
> package com.example.myapp;
> public final class AccountForm extends DynaValidatorActionForm
> implements Serializable {...}
>
>        <form-bean
>             name="accountForm"
>             type="com.example.myapp.AccountForm">

Hubert added a new feature in Struts 1.3.x that allows you to
configure "reset" behaviour on a property-by-property basis in the
struts-config.xml - I believe you just  add reset="true" attributes to
your <form-property> elements and it will reset the values to whatever
is (or isn't) specified by the "initial" attribute. Something like the
following:

 <form-beans>

    <form-bean  name="fooForm" type="org.apache.struts.action.DynaActionForm">
        <form-property name="state"  type="java.lang.String"
initial="INITIAL" reset="true"/>
        <form-property name="unsubscribe" type="java.lang.String"
initial="true" reset="true"/>
    </form-bean>

  </form-beans>

Niall

> --
> Wendy

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


Re: reset method with DyanValidatorForm

Posted by Wendy Smoak <ws...@gmail.com>.
On 1/6/06, fea jabi <zy...@hotmail.com> wrote:

> So, I might have to reset the checkboxes now.
>
> Do, I have no other choice but to create a formbean Class with all the
> setter's and getter's and then add reset method too for it.
>
> or is there an easier way to do this using DynaValidatorForm?

You don't have to add the get/set methods.  Just extend
DynaValidatorForm and add the reset method -- then be sure to change
the type of the form in struts-config.xml to your new form type.

package com.example.myapp;
public final class AccountForm extends DynaValidatorActionForm
implements Serializable {...}

       <form-bean
            name="accountForm"
            type="com.example.myapp.AccountForm">
            ...

--
Wendy

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


Re: reset method with DyanValidatorForm

Posted by fea jabi <zy...@hotmail.com>.
Thanks you all for responding. It's much clear now.

I have created a DynaValidatorForm in strutsconfig.xml which has about 20 
form properties for my jsp. I can see the components I need in my jsp.

This form is session scoped which has radio's and checkboxes.

So, I might have to reset the checkboxes now.

Do, I have no other choice but to create a formbean Class with all the 
setter's and getter's and then add reset method too for it.

or is there an easier way to do this using DynaValidatorForm?

Thanks.


>From: Andre Van Klaveren <ny...@gmail.com>
>Reply-To: "Struts Users Mailing List" <us...@struts.apache.org>
>To: Struts Users Mailing List <us...@struts.apache.org>
>Subject: Re: reset method in ActionForm
>Date: Tue, 3 Jan 2006 12:49:55 -0600
>
>Q: When exactly this method has to be used and when does this get called?
>
>A: The reset method is called for each new request, for both request
>and session scoped ActionForms, before the ActionForm is populated
>from the request.  Here's the sequence of events:
>
>1. Request received by controller.
>2. Create or recycle ActionForm (create request-scoped, recycle 
>session-scoped)
>3. Call reset() method on ActionForm.
>4. Store ActionForm in scope as defined in stuts-config.xml
>5. Populate ActionForm from request.
>6. Validate the ActionForm if defined in struts-config.xml.
>Assuming no validation errors:
>7a. Call execute() method of the Action passing ActionForm
>With validation errors:
>7b. Go back to input with ActionForm in proper scope.
>
>Q: Why do the checkboxes have to be reset?
>
>A: The reset() method was originally designed to reset boolean
>variables that represent checkbox values in the HTML form.  When an
>HTML form contains checkboxes, only the values for the checkboxes that
>are chedked are sent in the request (see HTTP spec).  The reset()
>method was designed to reset the boolean properties in the ActionForm
>that represent checkboxes to false.  This is necessary because false
>values aren't sent in the request, only true ones.  If you have a
>session-scoped ActionForm, the boolean values for the checkboxes could
>be set to true from a previous request.  Without resetting them they
>would always stay true.
>
>With a request-scoped ActionForm you don't have to implement the reset
>method unless you need your ActionForm properties to default to some
>value other than the default or that of which you defined when you
>declared the property on the ActionForm.
>
>Basically, the reset method is called before the request reaches the 
>Action.
>
>Hope that answers your questions.
>
>
>On 1/3/06, fea jabi <zy...@hotmail.com> wrote:
> > When exactly this method has to be used and when does this get called?
> >
> > Why do the checkboxes have to be reset?
> >
> > Prepopulating the formbean is done in Action class. hence, it's not 
>clear to
> > me the exact use of using the reset method.
> >
> > Thanks.
> >
> > _________________________________________________________________
> > Is your PC infected? Get a FREE online computer virus scan from 
>McAfee(r)
> > Security. http://clinic.mcafee.com/clinic/ibuy/campaign.asp?cid=3963
> >
> >
> > ---------------------------------------------------------------------
> > To unsubscribe, e-mail: user-unsubscribe@struts.apache.org
> > For additional commands, e-mail: user-help@struts.apache.org
> >
> >
>
>
>
>--
>Virtually,
>Andre Van Klaveren
>Architect III, SCP
>Global Public Sector
>Unisys Corporation
>
>---------------------------------------------------------------------
>To unsubscribe, e-mail: user-unsubscribe@struts.apache.org
>For additional commands, e-mail: user-help@struts.apache.org
>

_________________________________________________________________
Don’t just search. Find. Check out the new MSN Search! 
http://search.msn.click-url.com/go/onm00200636ave/direct/01/


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


Re: reset method in ActionForm

Posted by Andre Van Klaveren <ny...@gmail.com>.
Q: When exactly this method has to be used and when does this get called?

A: The reset method is called for each new request, for both request
and session scoped ActionForms, before the ActionForm is populated
from the request.  Here's the sequence of events:

1. Request received by controller.
2. Create or recycle ActionForm (create request-scoped, recycle session-scoped)
3. Call reset() method on ActionForm.
4. Store ActionForm in scope as defined in stuts-config.xml
5. Populate ActionForm from request.
6. Validate the ActionForm if defined in struts-config.xml.
Assuming no validation errors:
7a. Call execute() method of the Action passing ActionForm
With validation errors:
7b. Go back to input with ActionForm in proper scope.

Q: Why do the checkboxes have to be reset?

A: The reset() method was originally designed to reset boolean
variables that represent checkbox values in the HTML form.  When an
HTML form contains checkboxes, only the values for the checkboxes that
are chedked are sent in the request (see HTTP spec).  The reset()
method was designed to reset the boolean properties in the ActionForm
that represent checkboxes to false.  This is necessary because false
values aren't sent in the request, only true ones.  If you have a
session-scoped ActionForm, the boolean values for the checkboxes could
be set to true from a previous request.  Without resetting them they
would always stay true.

With a request-scoped ActionForm you don't have to implement the reset
method unless you need your ActionForm properties to default to some
value other than the default or that of which you defined when you
declared the property on the ActionForm.

Basically, the reset method is called before the request reaches the Action.

Hope that answers your questions.


On 1/3/06, fea jabi <zy...@hotmail.com> wrote:
> When exactly this method has to be used and when does this get called?
>
> Why do the checkboxes have to be reset?
>
> Prepopulating the formbean is done in Action class. hence, it's not clear to
> me the exact use of using the reset method.
>
> Thanks.
>
> _________________________________________________________________
> Is your PC infected? Get a FREE online computer virus scan from McAfee(r)
> Security. http://clinic.mcafee.com/clinic/ibuy/campaign.asp?cid=3963
>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: user-unsubscribe@struts.apache.org
> For additional commands, e-mail: user-help@struts.apache.org
>
>



--
Virtually,
Andre Van Klaveren
Architect III, SCP
Global Public Sector
Unisys Corporation

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


Re: reset method in ActionForm

Posted by Ted Husted <te...@gmail.com>.
On 1/3/06, Niall Pemberton <ni...@blueyonder.co.uk> wrote:
> Reset gets called just before the form is populated and the most common use
> is for resetting boolean properties set using checkboxes. This is because if
> the checkbox is not "checked" browsers do no submit a value, so the
> "population" mechanism doesn't set the property to "false" if the checkbox
> is "un-checked".

Which, in session-scoped ActionForms, is an issue. Once the box is
checked, there's no way for the user to to uncheck it.

But, if you are using booleans for the checkbox fields, it otherwise
doesn't matter, since a request-scope ActionForm will instantiate to
false (clear).

Along the way, people got into the habit of clearing everything in
reset, but, except for the session-scoped checkbox case, using reset
to clear fields is busy work.

-Ted.

>
> Niall
>
> ----- Original Message -----
> From: "fea jabi" <zy...@hotmail.com>
> Sent: Tuesday, January 03, 2006 6:22 PM
>
>
> > When exactly this method has to be used and when does this get called?
> >
> > Why do the checkboxes have to be reset?
> >
> > Prepopulating the formbean is done in Action class. hence, it's not clear
> to
> > me the exact use of using the reset method.
> >
> > Thanks.

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


Re: reset method in ActionForm

Posted by Niall Pemberton <ni...@blueyonder.co.uk>.
Reset gets called just before the form is populated and the most common use
is for resetting boolean properties set using checkboxes. This is because if
the checkbox is not "checked" browsers do no submit a value, so the
"population" mechanism doesn't set the property to "false" if the checkbox
is "un-checked".

Niall

----- Original Message ----- 
From: "fea jabi" <zy...@hotmail.com>
Sent: Tuesday, January 03, 2006 6:22 PM


> When exactly this method has to be used and when does this get called?
>
> Why do the checkboxes have to be reset?
>
> Prepopulating the formbean is done in Action class. hence, it's not clear
to
> me the exact use of using the reset method.
>
> Thanks.



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