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]