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: [EMAIL PROTECTED]
> 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: [EMAIL PROTECTED]
> > 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: [EMAIL PROTECTED]
> > For additional commands, e-mail: [EMAIL PROTECTED]
> > 
> > From: [EMAIL PROTECTED]
> > 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: [EMAIL PROTECTED]
> > > 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: [EMAIL PROTECTED]
> > > For additional commands, e-mail: [EMAIL PROTECTED]
> > > 
> > 
> > _________________________________________________________________
> > 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

Reply via email to