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
>

Reply via email to