You are viewing a plain text version of this content. The canonical link for it is here.
Posted to user@struts.apache.org by bob fuller <bo...@hotmail.com> on 2008/06/26 04:14:28 UTC

Struts 2 - Repopulate controls when validation fails

I'm following the "How do we repopulate controls when validation fails" FAQ located at...

http://struts.apache.org/2.x/docs/how-do-we-repopulate-controls-when-validation-fails.html

Of the two methods it suggests I am trying to use the 'action tag' method. Using the simple example from the FAQ works fine, but once I move beyond the simple and try to drop my "Languages" control inside the  tag of another action I have problems.

Here's my pseudo JSP (note MyAction)...









MyAction implements validateable and I am validating foo0 and foo1 inside the validate() method. Here's my validate() code...

public void validate() {
if (foo0 == null || foo0.length() == 0)
  addFieldError("foo0", "Foo0 is required");
else
  foo0 = foo0 + " VALIDATED";

if (foo1 == null || foo1.length() == 0)
  addFieldError("foo1", "Foo1 is required");
else
  foo1 = foo1 + " VALIDATED";		
}

The important thing to note about my validation code is that when the validation succeeds the data entered by the user is updated with the word "VALIDATED". This may seem like an odd thing to do, but it's part of the requirements of the project I'm working on.

Visiting http://localhost/MyAction/myAction_input.action works great. The page draws, foo0 is empty, the languages control has languages to choose from, foo1 is empty, the submit button appears. Submitting the form is when I get into problems. Here are three submit paths and their results...

1. foo0 is empty, foo1 is empty. click submit. RESULT - foo0 is empty. foo1 is empty. SUCCESS!
2. foo0 = 'A', foo1 is empty. click submit. RESULT - page redraws. foo0 = 'A VALIDATED'. foo1 is empty. SUCCESS!
3. foo0 is empty, foo1 = 'A'. click submit. RESULT - page redraws. foo0 is empty. foo1 = 'A'. FAIL! - foo1 should say 'A VALIDATED'

For some reason MyAction.setFoo1() is being invoked *again* after I set foo1 to 'A VALIDATED' in my validate() code. Why is that happening? I know it has something to do with the Languages control that appears before the foo1 text field, because when I remove the Languages control everything works as expected.

Anyone have any ideas about what the Languages control is doing that is causing my foo1 field to get reset to the original submit value? I'd really like to be able to use the 'action tags' approach for repopulating controls, but 'dropping wherever', as suggested in the FAQ (see link above), does not seem to be as easy as it sounds.

Thanks.









 

_________________________________________________________________
The other season of giving begins 6/24/08. Check out the i’m Talkathon.
http://www.imtalkathon.com?source=TXT_EML_WLH_SeasonOfGiving
---------------------------------------------------------------------
To unsubscribe, e-mail: user-unsubscribe@struts.apache.org
For additional commands, e-mail: user-help@struts.apache.org


Re: Struts 2 - Repopulate controls when validation fails

Posted by Lukasz Lenart <lu...@googlemail.com>.
Hi,

2008/6/26 bob fuller <bo...@hotmail.com>:
>
> The approach I am taking is from the Struts 2 FAQ...
>
> http://struts.apache.org/2.x/docs/how-do-we-repopulate-controls-when-validation-fails.html
>
> Why should it be avoided?

I don't remmeber exactly why, someone on this group mentioned that. In
my opinion, using Preparable interface is a better option, but maybe
I'm wrong ;-)


Regards
-- 
Lukasz
http://www.lenart.org.pl/

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


RE: Struts 2 - Repopulate controls when validation fails

Posted by bob fuller <bo...@hotmail.com>.
Setting the s:action's ignoreContextParams to true partially resolves the issue I am having. Here's my pseudo jsp now...

s:form name="myAction"
s:textfield name="foo0"/
s:action name="languages" ignoreContextParams="true" executeResult="true"/
s:textfield name="foo1"/
s:submit/
/s:form

Now, the troublesome second invocation of MyAction.setFoo1() is not occurring, but my issue is only partially resolved because I still do not understand what is happening. What is the relationship between s:action and the s:form it is inside that causes MyAction.setFoo1() to be invoked 'again' after s:action is finished with its execution?

> From: bobfuller30004@hotmail.com
> To: user@struts.apache.org
> Subject: RE: Struts 2 - Repopulate controls when validation fails
> Date: Thu, 26 Jun 2008 19:52:51 +0000
> 
> 
> The approach I am taking is from the Struts 2 FAQ...
> 
> http://struts.apache.org/2.x/docs/how-do-we-repopulate-controls-when-validation-fails.html
> 
> Why should it be avoided?
> 
> 
> > Date: Thu, 26 Jun 2008 08:32:37 +0200
> > From: lukasz.lenart@googlemail.com
> > To: user@struts.apache.org
> > Subject: Re: Struts 2 - Repopulate controls when validation fails
> > 
> > Hi,
> > 
> > As I know, use of s:action tag should be avoided, the better option is
> > to use Preparable interface, you can use prepare<MethodName>() method
> > also.
> > http://struts.apache.org/2.x/docs/prepare-interceptor.html
> > 
> > 
> > Regards
> > -- 
> > Lukasz
> > http://www.lenart.org.pl/
> > 
> > ---------------------------------------------------------------------
> > To unsubscribe, e-mail: user-unsubscribe@struts.apache.org
> > For additional commands, e-mail: user-help@struts.apache.org
> > 
> > From: bobfuller30004@hotmail.com
> > To: user@struts.apache.org
> > Subject: RE: Struts 2 - Repopulate controls when validation fails
> > Date: Thu, 26 Jun 2008 02:17:36 +0000
> > 
> > 
> > Trying again to give out my pseudo JSP...
> > 
> > s:form name="myAction"
> > s:textfield name="foo0"/
> > s:action name="languages" executeResult="true"/
> > s:textfield name="foo1"/
> > s:submit/
> > /s:form
> > 
> > > From: bobfuller30004@hotmail.com
> > > To: user@struts.apache.org
> > > Subject: Struts 2 - Repopulate controls when validation fails
> > > Date: Thu, 26 Jun 2008 02:14:28 +0000
> > > 
> > > 
> > > I'm following the "How do we repopulate controls when validation fails" FAQ located at...
> > > 
> > > http://struts.apache.org/2.x/docs/how-do-we-repopulate-controls-when-validation-fails.html
> > > 
> > > Of the two methods it suggests I am trying to use the 'action tag' method. Using the simple example from the FAQ works fine, but once I move beyond the simple and try to drop my "Languages" control inside the  tag of another action I have problems.
> > > 
> > > Here's my pseudo JSP (note MyAction)...
> > > 
> > > 
> > > 
> > > 
> > > 
> > > 
> > > 
> > > 
> > > 
> > > MyAction implements validateable and I am validating foo0 and foo1 inside the validate() method. Here's my validate() code...
> > > 
> > > public void validate() {
> > > if (foo0 == null || foo0.length() == 0)
> > >   addFieldError("foo0", "Foo0 is required");
> > > else
> > >   foo0 = foo0 + " VALIDATED";
> > > 
> > > if (foo1 == null || foo1.length() == 0)
> > >   addFieldError("foo1", "Foo1 is required");
> > > else
> > >   foo1 = foo1 + " VALIDATED";		
> > > }
> > > 
> > > The important thing to note about my validation code is that when the validation succeeds the data entered by the user is updated with the word "VALIDATED". This may seem like an odd thing to do, but it's part of the requirements of the project I'm working on.
> > > 
> > > Visiting http://localhost/MyAction/myAction_input.action works great. The page draws, foo0 is empty, the languages control has languages to choose from, foo1 is empty, the submit button appears. Submitting the form is when I get into problems. Here are three submit paths and their results...
> > > 
> > > 1. foo0 is empty, foo1 is empty. click submit. RESULT - foo0 is empty. foo1 is empty. SUCCESS!
> > > 2. foo0 = 'A', foo1 is empty. click submit. RESULT - page redraws. foo0 = 'A VALIDATED'. foo1 is empty. SUCCESS!
> > > 3. foo0 is empty, foo1 = 'A'. click submit. RESULT - page redraws. foo0 is empty. foo1 = 'A'. FAIL! - foo1 should say 'A VALIDATED'
> > > 
> > > For some reason MyAction.setFoo1() is being invoked *again* after I set foo1 to 'A VALIDATED' in my validate() code. Why is that happening? I know it has something to do with the Languages control that appears before the foo1 text field, because when I remove the Languages control everything works as expected.
> > > 
> > > Anyone have any ideas about what the Languages control is doing that is causing my foo1 field to get reset to the original submit value? I'd really like to be able to use the 'action tags' approach for repopulating controls, but 'dropping wherever', as suggested in the FAQ (see link above), does not seem to be as easy as it sounds.
> > > 
> > > Thanks.
> > > 
> > > 
> > > 
> > > 
> > > 
> > > 
> > > 
> > > 
> > > 
> > >  
> > > 
> > > _________________________________________________________________
> > > The other season of giving begins 6/24/08. Check out the i’m Talkathon.
> > > http://www.imtalkathon.com?source=TXT_EML_WLH_SeasonOfGiving
> > > ---------------------------------------------------------------------
> > > To unsubscribe, e-mail: user-unsubscribe@struts.apache.org
> > > For additional commands, e-mail: user-help@struts.apache.org
> > > 
> > 
> > _________________________________________________________________
> > The i’m Talkathon starts 6/24/08.  For now, give amongst yourselves.
> > http://www.imtalkathon.com?source=TXT_EML_WLH_LearnMore_GiveAmongst
> 
> _________________________________________________________________
> Earn cashback on your purchases with Live Search - the search that pays you back!
> http://search.live.com/cashback/?&pkw=form=MIJAAF/publ=HMTGL/crea=earncashback

_________________________________________________________________
Need to know now? Get instant answers with Windows Live Messenger.
http://www.windowslive.com/messenger/connect_your_way.html?ocid=TXT_TAGLM_WL_Refresh_messenger_062008

RE: Struts 2 - Repopulate controls when validation fails

Posted by bob fuller <bo...@hotmail.com>.
The approach I am taking is from the Struts 2 FAQ...

http://struts.apache.org/2.x/docs/how-do-we-repopulate-controls-when-validation-fails.html

Why should it be avoided?


> Date: Thu, 26 Jun 2008 08:32:37 +0200
> From: lukasz.lenart@googlemail.com
> To: user@struts.apache.org
> Subject: Re: Struts 2 - Repopulate controls when validation fails
> 
> Hi,
> 
> As I know, use of s:action tag should be avoided, the better option is
> to use Preparable interface, you can use prepare<MethodName>() method
> also.
> http://struts.apache.org/2.x/docs/prepare-interceptor.html
> 
> 
> Regards
> -- 
> Lukasz
> http://www.lenart.org.pl/
> 
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: user-unsubscribe@struts.apache.org
> For additional commands, e-mail: user-help@struts.apache.org
> 
> From: bobfuller30004@hotmail.com
> To: user@struts.apache.org
> Subject: RE: Struts 2 - Repopulate controls when validation fails
> Date: Thu, 26 Jun 2008 02:17:36 +0000
> 
> 
> Trying again to give out my pseudo JSP...
> 
> s:form name="myAction"
> s:textfield name="foo0"/
> s:action name="languages" executeResult="true"/
> s:textfield name="foo1"/
> s:submit/
> /s:form
> 
> > From: bobfuller30004@hotmail.com
> > To: user@struts.apache.org
> > Subject: Struts 2 - Repopulate controls when validation fails
> > Date: Thu, 26 Jun 2008 02:14:28 +0000
> > 
> > 
> > I'm following the "How do we repopulate controls when validation fails" FAQ located at...
> > 
> > http://struts.apache.org/2.x/docs/how-do-we-repopulate-controls-when-validation-fails.html
> > 
> > Of the two methods it suggests I am trying to use the 'action tag' method. Using the simple example from the FAQ works fine, but once I move beyond the simple and try to drop my "Languages" control inside the  tag of another action I have problems.
> > 
> > Here's my pseudo JSP (note MyAction)...
> > 
> > 
> > 
> > 
> > 
> > 
> > 
> > 
> > 
> > MyAction implements validateable and I am validating foo0 and foo1 inside the validate() method. Here's my validate() code...
> > 
> > public void validate() {
> > if (foo0 == null || foo0.length() == 0)
> >   addFieldError("foo0", "Foo0 is required");
> > else
> >   foo0 = foo0 + " VALIDATED";
> > 
> > if (foo1 == null || foo1.length() == 0)
> >   addFieldError("foo1", "Foo1 is required");
> > else
> >   foo1 = foo1 + " VALIDATED";		
> > }
> > 
> > The important thing to note about my validation code is that when the validation succeeds the data entered by the user is updated with the word "VALIDATED". This may seem like an odd thing to do, but it's part of the requirements of the project I'm working on.
> > 
> > Visiting http://localhost/MyAction/myAction_input.action works great. The page draws, foo0 is empty, the languages control has languages to choose from, foo1 is empty, the submit button appears. Submitting the form is when I get into problems. Here are three submit paths and their results...
> > 
> > 1. foo0 is empty, foo1 is empty. click submit. RESULT - foo0 is empty. foo1 is empty. SUCCESS!
> > 2. foo0 = 'A', foo1 is empty. click submit. RESULT - page redraws. foo0 = 'A VALIDATED'. foo1 is empty. SUCCESS!
> > 3. foo0 is empty, foo1 = 'A'. click submit. RESULT - page redraws. foo0 is empty. foo1 = 'A'. FAIL! - foo1 should say 'A VALIDATED'
> > 
> > For some reason MyAction.setFoo1() is being invoked *again* after I set foo1 to 'A VALIDATED' in my validate() code. Why is that happening? I know it has something to do with the Languages control that appears before the foo1 text field, because when I remove the Languages control everything works as expected.
> > 
> > Anyone have any ideas about what the Languages control is doing that is causing my foo1 field to get reset to the original submit value? I'd really like to be able to use the 'action tags' approach for repopulating controls, but 'dropping wherever', as suggested in the FAQ (see link above), does not seem to be as easy as it sounds.
> > 
> > Thanks.
> > 
> > 
> > 
> > 
> > 
> > 
> > 
> > 
> > 
> >  
> > 
> > _________________________________________________________________
> > The other season of giving begins 6/24/08. Check out the i’m Talkathon.
> > http://www.imtalkathon.com?source=TXT_EML_WLH_SeasonOfGiving
> > ---------------------------------------------------------------------
> > To unsubscribe, e-mail: user-unsubscribe@struts.apache.org
> > For additional commands, e-mail: user-help@struts.apache.org
> > 
> 
> _________________________________________________________________
> The i’m Talkathon starts 6/24/08.  For now, give amongst yourselves.
> http://www.imtalkathon.com?source=TXT_EML_WLH_LearnMore_GiveAmongst

_________________________________________________________________
Earn cashback on your purchases with Live Search - the search that pays you back!
http://search.live.com/cashback/?&pkw=form=MIJAAF/publ=HMTGL/crea=earncashback

Re: Struts 2 - Repopulate controls when validation fails

Posted by Lukasz Lenart <lu...@googlemail.com>.
Hi,

As I know, use of s:action tag should be avoided, the better option is
to use Preparable interface, you can use prepare<MethodName>() method
also.
http://struts.apache.org/2.x/docs/prepare-interceptor.html


Regards
-- 
Lukasz
http://www.lenart.org.pl/

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


RE: Struts 2 - Repopulate controls when validation fails

Posted by bob fuller <bo...@hotmail.com>.
Trying again to give out my pseudo JSP...

s:form name="myAction"
s:textfield name="foo0"/
s:action name="languages" executeResult="true"/
s:textfield name="foo1"/
s:submit/
/s:form

> From: bobfuller30004@hotmail.com
> To: user@struts.apache.org
> Subject: Struts 2 - Repopulate controls when validation fails
> Date: Thu, 26 Jun 2008 02:14:28 +0000
> 
> 
> I'm following the "How do we repopulate controls when validation fails" FAQ located at...
> 
> http://struts.apache.org/2.x/docs/how-do-we-repopulate-controls-when-validation-fails.html
> 
> Of the two methods it suggests I am trying to use the 'action tag' method. Using the simple example from the FAQ works fine, but once I move beyond the simple and try to drop my "Languages" control inside the  tag of another action I have problems.
> 
> Here's my pseudo JSP (note MyAction)...
> 
> 
> 
> 
> 
> 
> 
> 
> 
> MyAction implements validateable and I am validating foo0 and foo1 inside the validate() method. Here's my validate() code...
> 
> public void validate() {
> if (foo0 == null || foo0.length() == 0)
>   addFieldError("foo0", "Foo0 is required");
> else
>   foo0 = foo0 + " VALIDATED";
> 
> if (foo1 == null || foo1.length() == 0)
>   addFieldError("foo1", "Foo1 is required");
> else
>   foo1 = foo1 + " VALIDATED";		
> }
> 
> The important thing to note about my validation code is that when the validation succeeds the data entered by the user is updated with the word "VALIDATED". This may seem like an odd thing to do, but it's part of the requirements of the project I'm working on.
> 
> Visiting http://localhost/MyAction/myAction_input.action works great. The page draws, foo0 is empty, the languages control has languages to choose from, foo1 is empty, the submit button appears. Submitting the form is when I get into problems. Here are three submit paths and their results...
> 
> 1. foo0 is empty, foo1 is empty. click submit. RESULT - foo0 is empty. foo1 is empty. SUCCESS!
> 2. foo0 = 'A', foo1 is empty. click submit. RESULT - page redraws. foo0 = 'A VALIDATED'. foo1 is empty. SUCCESS!
> 3. foo0 is empty, foo1 = 'A'. click submit. RESULT - page redraws. foo0 is empty. foo1 = 'A'. FAIL! - foo1 should say 'A VALIDATED'
> 
> For some reason MyAction.setFoo1() is being invoked *again* after I set foo1 to 'A VALIDATED' in my validate() code. Why is that happening? I know it has something to do with the Languages control that appears before the foo1 text field, because when I remove the Languages control everything works as expected.
> 
> Anyone have any ideas about what the Languages control is doing that is causing my foo1 field to get reset to the original submit value? I'd really like to be able to use the 'action tags' approach for repopulating controls, but 'dropping wherever', as suggested in the FAQ (see link above), does not seem to be as easy as it sounds.
> 
> Thanks.
> 
> 
> 
> 
> 
> 
> 
> 
> 
>  
> 
> _________________________________________________________________
> The other season of giving begins 6/24/08. Check out the i’m Talkathon.
> http://www.imtalkathon.com?source=TXT_EML_WLH_SeasonOfGiving
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: user-unsubscribe@struts.apache.org
> For additional commands, e-mail: user-help@struts.apache.org
> 

_________________________________________________________________
The i’m Talkathon starts 6/24/08.  For now, give amongst yourselves.
http://www.imtalkathon.com?source=TXT_EML_WLH_LearnMore_GiveAmongst