I read the HowTo write a wizard on the Struts web-site but I wasn't
really happy with the solution, and I am looking for a better one. I
came up with another way and I would appreciate your comments. 

The design consists of: 
- The 'form' is a session scope form
- WizardAction class (a DispatchAction based) with following methods:
        * init () - starting the wizard and redirect to the first page
        * finish () - (or save()) finish the wizard and save the
information                       in the form using some business logic
delegate.
        
- Each Page or step in the wizard is a separate Action class, extending
a       WizrardBaseAction (a DispatchAction based) which contains some
shared  methods.

        For example: Page1Action extends WizardBaseAction {

                        // initializes the page (done only on first
encounter)
                        ActionForward init (mapping,...) throws
Exception;
                        ActionForward back (mapping,...) throws
Exception;
                        ActionForward next (mapping,...) throws
Exception;                              ActionForward finish
(mapping,...) throws Exception;
        }               

- Each page/step has a separate action-mapping item in the configuration
with local forwards for : 'back' (if not the first page), 'next',
'finish' (if allowed from that page).

 I apologize for not sketching the whole idea down to the last bit but I
hope you get the picture. 

Only problem is that this design touches the question of chaining
actions verses forward redirection (not just dispatching). 

For example the Page1Action.next() does the following:
        1. validate the page
        2. perform whatever processing required
        3. return the next action to forward to (redirect or chain with
all     its illness..)

In my opinion (humble one of course :) having such a separation keeping
each step in its own class is better and clearer design than having them
all in the same Action class. 

Isn't there a way to prevent the reset + pre-population of the form done
while chaining actions? Furthermore, is it so bad to redirect between
actions? 

Thanks in advance,
Erez






 



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

Reply via email to