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]