Thanks Niclas for the ideas. While I think the currentPage/lastPage hidden field idea would work for the simple case I outlined, I don't think it would work for slightly more complex case (requirements changing already :-), eg.
(original) Page1->Page3->Page2->(back)->Page3 (extended) Page1->Page3->Page2->(back)->Page3->(back)->Page1 The scheme would be fine until the last (back) at which point the (back) would go the Page2 rather than Page1. The essential problem with the scheme I think is that it cannot 'remember' further back that previous page, and I believe the full navigation history needs to be remembered somehow in order to navigate back via the original forward path. This is why I was thinking of implementing the 'page stack' idea. However, I must point out that I am very new to Struts and perhaps I am missing something. For example perhaps there is some way to preserve the hidden fields from previous invocations of pages when navigating back to them ? -- James -----Original Message----- From: Meier, Niclas [mailto:[EMAIL PROTECTED] Sent: 27 July 2004 19:06 To: Struts Users Mailing List Subject: RE: Back navigation using application back buttons Hello, You can try two hidden fields fort he 'currentPage' and 'lastPage'. When you submit any form with the 'next'-Button you can evalute the request determine the next page in your process. If you proceed with the back button, you can go back the the last page: Example 1 Page 1 (c:1, l:undef) -[fwd]-> Page 2 (c:2, l:1) -[back]-> Page 1 (c:1, l:2) Example 2 Page 1 (c:1, l:undef) -[fwd]-> Page 3 (c:3, l:1) -[fwd]-> Page 2 (c:2, l:3) -[back]-> Page 3 (c:3, l:2) You can implement this function into Abstract classes (From and Action) to handle the whole navigation. Or you create a dispatcher which all pages configured into. <action path="/foo/dispatcher" name="naviForm" type="com.foo.struts.DispatcherAction"> <forward name="1" path="/pages/page1.jsp"/> <forward name="2" path="/pages/page2.jsp"/> <forward name="3" path="/pages/page2.jsp"/> </action> A good idea maybe the seperation of request handling of the page form, which is related to the page and some stuff you need to prepare the view. I often use this pattern with great success. {Form on Page 1} -[submit]-> FormOneRequestHandlingAction -[forward]-> DispatcherAction -[forward]-> ViewPreparingActionPageTwo -[forward] -> Page2.jsp The first two actions can decide to return to page 1 and the third action will always forward to the jsp. Regards Niclas -----Original Message----- From: James Sheridan [mailto:[EMAIL PROTECTED] Sent: Tuesday, July 27, 2004 4:51 PM To: '[EMAIL PROTECTED]' Subject: Back navigation using application back buttons Hi, I am trying to implement a simple Back mechanism which uses Back buttons in the page (encouraging users to use this rather than browser Back which is not a good idea). Lets call the pages Page1 and Page2. A Page 1 action brings user to Page 2. Page 2 has a Back button. The basic mechanism is trivial, ie. an action handler for Page 2 Back which forwards to Page1. However the problem is I want to be able to go Back to pages other than Page1 since the user can also get to Page 2 via Page3. ie. I want to be able to do Page1->Page2->(back)->Page1 Page1->Page3->Page2->(back)->Page3 Is there some way to control the forwarding for the Page2 Back handling and know which page to go back to ? The 'static' mappings I would set up in struts-config.xml appear to only allow me to configure navigation back to one specific page. I was considering implementing a 'page stack' object and passing it as a session attribute but I would have hoped that the Struts framework would make this possible in some easy way. I suppose some of the wizard ideas might help but a wizard is essentially different from what I cam trying to achieve in the sense that Back in a wizard always go back to a specific page. Any help would be greatly appreciated. -- James ********************************************************************** This email and any files transmitted with it are confidential and intended solely for the use of the individual or entity to whom they are addressed. If you have received this email in error please notify the sender. This footnote also confirms that this email message has been swept by MIMEsweeper for the presence of computer viruses. ********************************************************************** --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED] ********************************************************************** This email and any files transmitted with it are confidential and intended solely for the use of the individual or entity to whom they are addressed. If you have received this email in error please notify the sender. This footnote also confirms that this email message has been swept by MIMEsweeper for the presence of computer viruses. ********************************************************************** --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]