Aha!  Thank you for clarifying this.
So, in Struts config-speak, is this all that
is needed to do what you described:

<action-mappings>

  <action path=      "/SetUpCountryForm"
          type=     
"com.example.action.SetUpCountryFormAction"
          scope=     "request"
          name=      "countryForm"
          input=    
"/WEB-INF/country-form.jsp">
      <forward name= "success"
path="country-form-page" redirect="false"/>
      <forward name= "failure"
path="error-page" redirect="false"/>
  </action>

  <action path=      "/ProcessCountryForm"
          type=     
"com.example.action.ProcessCountryFormAction"
          scope=     "request"
          name=      "countryForm"
          input=     "/SetUpCountryForm">
      <forward name= "success"
path="success-page" redirect="false"/>
      <forward name= "failure"
path="error-page" redirect="false"/>
  </action>

</action-mappings>


In addition to this, the actual JSP has to
be non-static, that is, it is JSPs
responsibility to take any data it needs
from the HTTP Request and populate the HTML
form with it, is that correct? (i.e. this is
not done auto-magically by Struts - it is up
to the JSP developer to add code to do that
to the JSP)?

Thank you,
Otis



---- On Wed, 19 Feb 2003, Robert Taylor
([EMAIL PROTECTED]) wrote:

> Wrong. If you look more closely I offered
a solution that allows
> you to avoid putting data in session scope.
> 
> 
> "Rick, I usually define the setUpForm
action URI as the input attribute
> of the processForm action element. That
way if a validation error occurs
> the request is forwarded to the setUpForm
action which repopulates the list
> and forwards to the page where my list is
displayed along with the error
> message and the users input.
> 
> Works for me and I don't have to place
anything in the session."
> 
> 
> - SetUpAction prepares the page to be
displayed. For example,
>   populate the form associated with this
action with a list of
>   countries. Let's put the form in request
scope.
> 
> - ProcessAction processes the user input. The
>   input attribute value of the action
element for the 
>   ProcessAction action mapping is defined
to be
>   the uri which invokes the SetUpAction.
> 
> - When a validation error, the appropriate
error messages are
>   created and the request is forwarded to
the SetUpAction where
>   the page is prepared. The request
contains all the user input
>   and the SetUpAction (once again)
populates the countries in 
>   the form.
> 
> - The request is then forwarded to the
.jsp page where the 
>   data which the user entered is rendered
along with their
>   invalid input which caused the
validation errors.
> 
> - Nothing in session scope.
> 
> To answer your specific questions:
> 
> > But how does one do these things:
> > 
> > A. Get the user back the input form
> Upon validation error, struts will forward the
> request to the URI defined in the input
attribute value
> of the action element of the action mapping
> defined for the action which processes the
user input.
> In the above example would be for
ProcessAction. 
> 
> > 
> > B. Display the error message
> Struts validation will create ActionErrors and
> place them in the request. Assuming you
are using
> StrutsValidator.
> 
> 
> > C. Make sure that all possible fields are
> Since the request is forwarded, all user input
> still exists in the request and thus the form.
> 
> 
> > D. The pull-down in the form has that same
> >    list of countries
> Since you are being forwarded to the
SetUpAction (see above example)
> your countries will be re-populated.
> 
> robert
> 
> > -----Original Message-----
> > From: otisg [mailto:[EMAIL PROTECTED]]
> > Sent: Wednesday, February 19, 2003 1:37 PM
> > To: Struts Users Mailing List
> > Subject: Re: RE: handling form errors in
Actions, returning to form,
> > prepopulating them without re-POSTING
> > 
> > 
> > Thanks.
> > However, that thread really says one thing -
> > put everything in session scope and don't
> > worry about it :)
> > 
> > But how does one do these things:
> > 
> > A. Get the user back the input form
> > 
> > -- Is it by just finding a 'failure' forward
> > that points to the original JSP with the
form?
> > 
> > B. Display the error message
> > 
> > -- I guess the errors are saved either in
> > Session or Request, ok.
> > 
> > C. Make sure that all possible fields are
> >    pre-populated with data that the user
> > already entered
> > 
> > -- Is this up to the JSP develop to do,
> > perhaps with the help of
> >    some Struts JSP tags or does this happen
> > automagically?
> > 
> > D. The pull-down in the form has that same
> >    list of countries
> > 
> > -- Yes, a developer could just save this in
> > Session scope, but if that is not desired,
> > then how is this re-retrieved if the user it
> > forwarded to a JSP?  The user would need to
> > be re-sent to the original action that
> > retrieved the list, no?
> > 
> > E. The user is not prompted with 'Do you
> >    want to re-POST' dialog
> > 
> > -- Does this happen automagically?
> > 
> > Thanks,
> > Otis
> > 
> > 
> > 
> > 
> > ---- On Wed, 19 Feb 2003, Robert Taylor
> > ([EMAIL PROTECTED]) wrote:
> > 
> > >
> >
http://www.mail-archive.com/struts-user@jakarta.apache.org/msg58515.html
> > > 
> > > > -----Original Message-----
> > > > From: otisg [mailto:[EMAIL PROTECTED]]
> > > > Sent: Wednesday, February 19, 2003
12:39 PM
> > > > To: [EMAIL PROTECTED]
> > > > Subject: handling form errors in
> > Actions, returning to form,
> > > > prepopulating them without re-POSTING
> > > > 
> > > > 
> > > > Hello,
> > > > 
> > > > We are starting to use Struts and are
> > > > wondering how Struts users handle
scenarios
> > > > such as this one:
> > > > 
> > > > 1. /ShowForm action gets called,
mapped to
> > > > ShowFormAction.
> > > >    ShowFormAction pulls a list of
countries
> > > > from the DB (for ex.),
> > > >    stick that list in the HTTP
request, and
> > > > 'forwards' to 'ok', 
> > > >    which is a JSP with a form that
consists
> > > > of blank form fields
> > > >    and a pull-down with countries
that it
> > > > gets from the HTTP req.
> > > > 
> > > > 2. A user fills the form, but forgets a
> > > > required field before he
> > > >    submits the form by POSTing to
> > > > /SubmitForm action.
> > > > 
> > > > 3. /SubmitForm is mapped to
SubmitFormAction
> > > > which detects a
> > > >    missing required field.  Is puts
error
> > > > messages in an instance 
> > > >    of ActionErrors.  It now needs to
forward
> > > > to something other
> > > >    than 'ok'.
> > > > 
> > > > What we want to happen at this point is:
> > > > 
> > > > A. Get the user back the input form
> > > > B. Display the error message
> > > > C. Make sure that all possible
fields are
> > > > pre-populated with
> > > >    data that the user already entered
> > > > D. The pull-down in the form has
that same
> > > > list of countries
> > > > E. The user is not prompted with 'Do you
> > > > want to re-POST' dialog
> > > > 
> > > > How can this be done?
> > > > 
> > > > In our Struts config we have:
> > > > 
> > > >     <!-- gets a list of countries
from DB,
> > > > puts them in Request,
> > > >          forwards to 'ok'  -->
> > > >     <action path=      "/ShowForm"
> > > >             type=     
> > > > "net.wgen.ampng.action.ShowFormAction"
> > > >             scope=     "request">
> > > >         <forward name= "ok"      
> > > > path="/WEB-INF/v/form-ok.jsp"/>
> > > >         <forward name= "failure" 
> > > > path="/WEB-INF/v/form-not.jsp"/>
> > > >     </action>
> > > > 
> > > >     <!-- gets form data and
processes it -->
> > > >     <action path=      "/SubmitForm"
> > > >             type=     
> > > > "net.wgen.ampng.action.SubmitFormAction"
> > > >             scope=     "request"
> > > >             validate=  "true"
> > > >             name=      "myForm"
> > > >             input=    
> > "/WEB-INF/v/form.jsp">
> > > >         <forward name= "ok"      
> > > > path="/WEB-INF/v/ok.jsp"/>
> > > >         <forward name= "failure" 
> > > > path="/WEB-INF/v/form.jsp"/>
> > > >     </action>
> > > > 
> > > > 
> > > > What is the best way to handle this and
> > > > achieve A, B, C, D, and E that I
mentioned
> > > > above?
> > > > 
> > > > If SubmitFormAction encounters an error
> > > > (e.g. a missing required field),
what should
> > > > it forward to?  The original JSP in
'input'
> > > > attribute?  The JSP mapped to
'failure' (the
> > > > same JSP with the original form)?
> > > > Should it forward/chain to another
Action
> > > > that redirects back to the original
form?
> > > > (but that would lose the form data +
error
> > > > messages in the Request, wouldn't it?) 
> > > > Something else?
> > > > Does the JSP with the form need to
contain
> > > > the logic for pulling errors + form data
> > > > from the request, if it exists?
> > > > 
> > > > This seems like a situation that
would be
> > > > very common and I feel that Struts
has some
> > > > elegant way for handling this.
> > > > 
> > > > Thank you,
> > > > Otis
> > 
> > 
> >
________________________________________________
> > Get your own "800" number
> > Voicemail, fax, email, and a lot more
> > http://www.ureach.com/reg/tag
> > 
> >
---------------------------------------------------------------------
> > To unsubscribe, e-mail:
[EMAIL PROTECTED]
> > For additional commands, e-mail:
[EMAIL PROTECTED]
> > 
> 
> 


________________________________________________
Get your own "800" number
Voicemail, fax, email, and a lot more
http://www.ureach.com/reg/tag

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to