Hi, Had almost forgetten about your mail :-(( We have following action hierarchy. AbstractApplicationAction(As per struts best üractice guidelines...) | |--------------------------------------| | | AbstractOpenAction AbstractSaveAction (Any action that gets data (Any action that performs update in DB.) for some screen)
The important point is the Save actions will never perform a get.So in any action, when user updates something, then there will be generraly 2 actions involved.One action that does the update and another action that will get the data to be shown to the user after update screen. Usecase:UserPreferencesUpdate screen.The user is shown HisDetails after login and he can update those by pressing update button.After update is successful, he will be shown same details. a:UserDetailsOpenAction extends AbstractOpenAction. This will get the user details for given user id and forward it to user details JSP. which will show the user details to user. b:UseDetailsUpdateAction extends AbstractSaveAction This will update the user details passed and forward to success forward(which in this case wil point to UserDetailsOpenAction ). The complete implementation will be as follows. The login action will forward to UserDetailsOpenAction upon successful login .The user will see his details on screen aftter login.When he presses update,UseDetailsUpdateAction will be called.It will update the details for user and forward to UserDetailsOpenAction again, which will show the user his updated details. As you can see, the atomic actions become realy reusable units.So tomorrow if after some other functionality(Placing an order for example),the suer needs to be shown his details page,then just make that other actions success forward to point to UserDetailsOpenAction .And if the actions are so atomic, changing teh screen flow is just like attaching together different actions is struts-config by using proper forwards(the assumption being all required parameters are being passed around) But I think the scenerio you have explained do not need 2 actions.It is the case for just one OpenAction.(ProductListOpenAction).And the form for this action can keep record of teh search criteria entered(by having them as attributes) and the same can be passed to jsp either as text fields or hidden parameters. HTH. regards, Shirish. -----Original Message----- From: Villalba Arias, Fredy [BILBOMATICA] [mailto:[EMAIL PROTECTED] Sent: Monday, February 09, 2004 6:59 PM To: Sakhare, Shirishchandra Subject: RE: Back to the originating screen... Yes, indeed. To be precise, I'm (more) interested in the OpenAction/SaveAction paradigm, and the general GET/POST philosophy you applied. The "Changing Language" functionality would be a good example, although I've thought about another one that I'm also interested in: There is a login screen. The user logs into the system, gets "redirected" to the "List of Products" screen where the paginated list of products is shown. That screen allows the user to filter the list by specifying one or more filtering parameters (on that same screen) and submitting them (by clicking a "Search" - submit - button). Initially, there will appear all products. After clicking on "Search", that same screen is "reloaded"; however, this time the list contains only those products meeting the search criteria. The last setting for all search parameters MUST be visible AFTER the search has returned (i.e. the screen has been reloaded). I've already been thinking and working on this very same example and I've already managed to solve it by implementing everything in the same Action. However, if I understood you (and the thread you told me to give a look at), it should preferably be implemented in 2 different Actions. Anyway, won't distract you any further. I look forward to hearing from you again. Kind Regards, Freddy. -----Mensaje original----- De: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED] Enviado el: lunes, 09 de febrero de 2004 15:57 Para: Villalba Arias, Fredy [BILBOMATICA] Asunto: RE: Back to the originating screen... Hi Freddy, I will definately glad to share my experience.If i am not mistaken, you will like to know more about how we have implemented the Changing Language Functionality? including the concept of OpenAction/SaveAction? I will send you a detail mail.But I will also urge you to read the post about chainning actions from struts archive. http://marc.theaimsgroup.com/?l=struts-user&m=104427309720653&w=2 This thread might be of interest to you.Especially the defference between action chainning and Action relay... A bit under pressure today.But definately send a detail mail by tomorrow. regards, Shirish -----Original Message----- From: Villalba Arias, Fredy [BILBOMATICA] [mailto:[EMAIL PROTECTED] Sent: Monday, February 09, 2004 3:41 PM To: Sakhare, Shirishchandra Subject: RE: Back to the originating screen... Hi Shirish, I'm really interested in this approach you mentioned. I'm a experienced architect, yet kind of new to the Struts FWK. Therefore, I'm still in that early stage when you try to figure out the best designs patterns / strategies for architecting a Struts-based system. Would you be willing to share this knowledge with me? Regards, Freddy. -----Mensaje original----- De: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED] Enviado el: viernes, 06 de febrero de 2004 16:40 Para: [EMAIL PROTECTED] Asunto: RE: Back to the originating screen... Hi, We have implemented similar concept.And you are right.You have to be careful not to redo the last posts. Luckily for us, the desin we had solved the problem.We have a concept of OpenAction(Actions that prepare data for view) and Save action(Post actions,actions that update DB).So in AbstractOpenAction, the called URL is saved in session under a specific key(Open actions always use GET.So the saved URL can always recreate the request if you forward to it :-))) and when the user changes the language, we change the language in session and just forward to last action called.And as the last action called will be always be the OpenAction which created the last screen seen by user.So chance of a post being done again. Some users have pointed out that having such Reusable small actions lends itself to action chaining(e.g. To complete a user Preference save request, you will first call SaveUserPrefrrenceAction which will then forward to UserdetaislOpenAction,assuming you are showing user details after he saves them) And qwe had a long discussion on this forum about action chainning. So you may want to review all of this before you take this route. HTH. regards, Shirish -----Original Message----- From: Villalba Arias, Fredy [BILBOMATICA] [mailto:[EMAIL PROTECTED] Sent: Friday, February 06, 2004 4:26 PM To: Struts Users Mailing List Subject: RE: Back to the originating screen... Hi, IMHO, this is a difficult problem to solve (100%, that is). Including the redo-URL on the language link is the most practical of those options, if you are able to generate "redo-URLs" that do not "redo" the last action itself but only "recompose" the current view (not that simple, I know). Remember to be careful with issues such as redo-ing posts that, for instance, involve persistency-related tasks. Say: "saveNewProduct". Hth, Freddy. -----Mensaje original----- De: Jesse Alexander (KAID 11) [mailto:[EMAIL PROTECTED] Enviado el: viernes, 06 de febrero de 2004 16:07 Para: 'Mailing List [EMAIL PROTECTED]' Asunto: Back to the originating screen... Hi I need a hint on how to return always to the originating action preserving all input-parameters to that originating action... problem: From any screen in my application the user is allowed to change the language of the UI. He should be immediately presented the same screen again in the new UI-language. So far I think I create an action (and a global forward) to change the UI-language. That's the easy part. But what strategy to use in order to be able to redo the last action before the change of language? The possibilities I thought of are: - on the language link, include always the "redo"-URL - on each primary action (actions called from the UI, opposed to secondary actions called from primary actions...) I store the "redo"-URL in the session. What do you do in such a case? thanks in advance Alexander --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED] --- Incoming mail is certified Virus Free. Checked by AVG anti-virus system (http://www.grisoft.com). Version: 6.0.459 / Virus Database: 258 - Release Date: 25/02/2003 --- Outgoing mail is certified Virus Free. Checked by AVG anti-virus system (http://www.grisoft.com). Version: 6.0.459 / Virus Database: 258 - Release Date: 25/02/2003 --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED] --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED] --- Incoming mail is certified Virus Free. Checked by AVG anti-virus system (http://www.grisoft.com). Version: 6.0.459 / Virus Database: 258 - Release Date: 25/02/2003 --- Outgoing mail is certified Virus Free. Checked by AVG anti-virus system (http://www.grisoft.com). Version: 6.0.459 / Virus Database: 258 - Release Date: 25/02/2003 --- Incoming mail is certified Virus Free. Checked by AVG anti-virus system (http://www.grisoft.com). Version: 6.0.459 / Virus Database: 258 - Release Date: 25/02/2003 --- Outgoing mail is certified Virus Free. Checked by AVG anti-virus system (http://www.grisoft.com). Version: 6.0.459 / Virus Database: 258 - Release Date: 25/02/2003 --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]