Interesting approach. Let me see if I can
explain this back to you to make sure I understand what you are
saying:
Does your Wizard.jsp look something like
this:
<template:insert
template='/template.jsp'> <template:put name='header'
content='/header.html' /> <template:put name='sidebar'
content='/sidebar.jsp' /> <logic:equal property='page'
value='1'>
<template:put
name='content' content='/wizardPage1.jsp'/>
</logic:equal> ...
<logic:equal property='page'
value='N'>
<template:put
name='content' content='/wizardPageN.jsp'/>
</logic:equal>
<template:put name='footer' content='/footer.html'
/> </template:insert>
And somewhere at the top you have some logic to
determine which page your on based on direction and error
conditions?
*** I'm starting to feel like I'm at battle with
struts! There must be a way I can hook the error checking logic to
circumvent the redirect to the base input form. I guess its time to dig
thru the source code. What bothers me the most is that I feel like I'm not
doing anything outrageous here.
- jeff
----- Original Message -----
Sent: Tuesday, May 08, 2001 5:56 PM
Subject: RE: Override Input Form / JSP
when Errors Are Encountered
Here
is the way I did it:
I am
using the template approach for the jsp files.
template.jsp is the template file
wizard.jsp has has the template tags
wizardpageX.jsp (where X is a number and corresponds to the number of
screens in your wizard) contains the presentation.
Inside of the wizardpageX.jsp there are 2 hidden fields (page and
direction). page holds the number of the page we are viewing
and direction holds the action we want to take ( next, previous, finish,
cancel). I use JavaScript to update the direction tag when one
of the buttons are pushed. The ActionForm can validate the input for the
page we are viewing based on the direction we want to go. If there are
any errors, we forward back to wizard.jsp ( the input file ).
wizard.jsp will look at the page property and decide which wizardpageX.jsp
file to display as the body of the template.jsp. If there aren't any errors, my Action object
will update the page property to the page we want to go and forward control
back to wizard.jsp.
James Hicks
That doesn't work - that is my problem. I
don't have a chance to do this in my Action class since the presence of
errors generated in form.validate() triggers an immediate response by the
framework and redirection occurs automagically to the input form (page 1),
not the page which caused the error (eg page 2).
----- Original Message -----
Sent: Tuesday, May 08, 2001 3:56
PM
Subject: RE: Override Input Form /
JSP when Errors Are Encountered
instead of mapping.findForward(mapping.getInput()
) use mapping.findForward("page2 or page3" )
;
When validate() returns an error
collection, the framework takes me back to the input page (page1).
How do I override this? I have a multi-page input wizard as shown
below. I'd like to stay on the page that resulted in the error
instead of going back to page 1.
<action
path="/someWizard"
type="com.x.WizardAction"
name="wizardForm"
scope="session"
input="/page1.jsp">
<forward
name="page2"
path="/page2.jsp"/>
<forward
name="page3"
path="/page3.jsp"/>
</action>
|