|
The
form bean will call it's reset() method for each page. Therefore, change
your implementation of the reset() method to not remove your
data.
I followed the wizard example source code (see
below) but I have a problem in that my Form data gets recycled between pages
of the wizard. In another words, if I click next on page 1, then click
prev on page 2, my form data disappears from page 1. Why is this
happening?
Also, it appears that the Form object always
exists in the Action class. The example that comes with Struts shows
conditional logic that populates either the request or session attribute in
the case where the form is null.
- Jeff I use something like the following in my struts-config.xml file:
<action path="/signup"
type="SignupAction"
name="signupForm"
scope="session"
input="page1.jsp">
<forward name="page1" path="page1jsp"/>
<forward name="page2" path="page2.jsp"/>
<forward name="page3" path="page3.jsp"/>
<forward name="page4" path="page4.jsp"/>
<forward name="success" path="confirm.jsp"/>
</action>
In page1.jsp I declare the following buttons:
<html:hidden property="page" value="1"/>
<html:submit>
<bean:message key="button.next"/>
</html:submit>
Page2.jsp:
<html:hidden property="page" value="2"/>
<html:submit>
<bean:message key="button.prev"/>
</html:submit>
<html:submit>
<bean:message key="button.next"/>
</html:submit>
Page3.jsp
<html:hidden property="page" value="3"/>
<html:submit>
<bean:message key="button.prev"/>
</html:submit>
<html:submit>
<bean:message key="button.next"/>
</html:submit>
Page4.jsp
<html:hidden property="page" value="4"/>
<html:submit>
<bean:message key="button.prev"/>
</html:submit>
<html:submit>
<bean:message key="button.finish"/>
</html:submit>
In my SignupForm.java I define all fields for each page. Then I have a
switch statement in the validate method to validate the data for each page:
public ActionErrors validate(ActionMapping mapping, HttpServletRequest
request)
{
ActionErrors errors = new ActionErrors();
switch (page)
{
case 1:
// Validate fields on page 1
case 2:
///
}
return errors;
}
Finally in the SignupAction.java I check for which button was pressed and
return the next or previous page:
public ActionForward perform(ActionMapping mapping,
ActionForm form,
HttpServletRequest request,
HttpServletResponse response)
throws IOException, ServletException
{
HttpSession session = request.getSession();
SignupForm signupform = (SignupForm) form;
int page = signupform.getPage();
String label = request.getParameter("submit");
if (label != null)
{
if ("<< Prev".equals(label)) // Previous was
pressed
{
return mapping.findForward("page"+(page-1));
}
else if ("Next >>".equals(label)) // Next was pressed
{
return mapping.findForward("page"+(page+1)); //
Finished was pressed
}
else if ("Finish".equals(label))
{
// Do finish work, add data to database, whatever
}
..... return(mapping.findForward("success"));
I'm new to struts (about 2 weeks now). I tried to find examples but couldn't
find any. So I hacked out this. Perhaps if someone has a better way we can
all learn something new.
I hope this helps.
----- Original Message -----
From: <[EMAIL PROTECTED]>
To: <[EMAIL PROTECTED]>
Sent: Tuesday, April 24, 2001 9:51 AM
Subject: wizard style example, anywhere?
> Hello struts-users,
>
> I am very new to Struts (or JSP for that matter), and in need of
> some examples that I can get my hands on.
>
> Specifically, an application that uses "wizard" style, multiple-page
> input forms would be very nice. Couple of Struts documents I looked
> mention that Struts works well with wizard style application, but I get
> confused when it comes to writing struts-config.xml, JSPs that share
> the same ActionForm or Action, etc.. I gotta see it working before I
> start building mine.
>
> Good examples, anywhere, anyone?
>
> thanks,
>
> - kazumi
>
|