An action object is created for every request. If you need to preserve data across requests, the most basic way is to use the session directly (implement SessionAware). Then, your action gets the session map through a setter. There are other options in various stages of development including a scopedmodeldriven interceptor and Spring Web Flow support.
Don On 12/13/06, Jon Wilmoth <[EMAIL PROTECTED]> wrote:
I have thought about that, but before I do I'd like to know how/when objects are pushed/popped off the ValueStack. I'd hate to have all the data needed to render a single page maintained in the session. This is particularly important if you have a series of screens that might be tied to a single action. For example... MyWorkflowAction { //Only used to render result of executePageOne List<MyBigObject> pageOneObjects; //Only used to render result of executePageTwo List<MyMediumObject> pageTwoObjects; //Only used to render result of executePageThree List<MyOtherBigObject> pageThreeObjects; public String executePageOne(){...} public String executePageTwo(){...} public String executePageThree(){...} } Are actions stored in the equivalent of the request namespace? If so, what's the recommended way for preserving data between requests? ----- Original Message ---- From: Don Brown <[EMAIL PROTECTED]> To: Struts Users Mailing List <user@struts.apache.org>; Jon Wilmoth <[EMAIL PROTECTED]> Sent: Wednesday, December 13, 2006 12:09:05 PM Subject: Re: Struts2 Storing/Retrieving View objects Just provide getter methods on your action. Then, you can retrieve the data in your jsp through either jsp expressions - ${myProp} - or the Struts 2 tags. Struts 2 makes your action object's properties automatically available to your jsp or other template file. Don On 12/13/06, Jon Wilmoth <[EMAIL PROTECTED]> wrote: > I'm preparing to make the switch from Struts 1.x to Struts 2 for new development and had a few questions related to how objects used to render data in a JSP page should be stored/retrieved for a desired http namespace. One of the design tenants I try to employ in my current S1 webapp is minimizing HttpSession bloat by storing objects needed to render jsp pages as request attributes instead of session attributes. I understand S2 has tried to insulate the actions from the http communication details by introducing the ValueStack. I generally like the idea, but I'm having a difficult time understanding how/when different items are pushed/popped. For example in my S1 action if I knew the target jsp result page needed a list of objects as well as the current user to display info I'd bind the objects to the view like so: > > //List only need to render immediate next page > request.setAttribute("myListOfObjects", objectList); > //User needed to render immediate next page and other page > session.setAttribute("currentUser", currentUser); > > How would I bind the objects in S2 such that the objectList is not present in the ValueStack after the request? How do I ensure the currentUser is present in the ValueStack for multiple requests? > > Thanks in advance, > Jon > > p.s. I've read through both the "Comparing Struts 1 and 2" and "Struts 1 Solutions" guides and didn't find the answer to my question. > > --------------------------------------------------------------------- > 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]
--------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]