"This works for the most cases, but not for mine. Because I have to save a more complex object and references within this object have to keep alive too. So I think the way of buffering these object into hidden fields is not a good idea in this special case."
Can you explain why you can't reconstruct everything? I probably don't know nearly enough about your use case, but I can't see why you can't rebuild everything. We do have one section of a site that is basically a wizard. We started with just using the session but this wasted too much server resources under load, plus some users don't understand session timeouts and will open a support ticket. Generally I try to avoid the session as much as possible. I looked at @Wizard, but decided there are too many events and too many logical branches, so an @Wizard bean could be somewhat unwieldy (split into two action beans right now). We are just writing out all the properties of this object manually which is pretty lousy, but I don't see any reason why we couldn't use an xml or json library to write the data of this whole object out into one field. (encrypted). You might be able to do that. Then the real fields on the page would get bound in afterward and augment/overwrite the giant xml field. I also thought it might be useful if there were a <stripes:complexHidden name="someComplexThing" /> tag that went out over the graph and deeply wrote out <stripes:hidden tags for all the leaf nodes. I think the code to do the heavy lifting is already somewhere within stripes, if anyone thinks this feature is useful enough it probably wouldn't be too difficult to write. -----Original Message----- From: Christoph Oberhofer [mailto:zitronenmeli...@gmx.at] Sent: Monday, April 20, 2009 5:46 PM To: stripes-users@lists.sourceforge.net Subject: Re: [Stripes-users] Problems with FlashScope - Lifetime of Object Hi Christian, thank you for the quick response and very good explanation. Poitras Christian wrote: > You have a many possibilities. But unless you put the ActionBean in session > (@SessionScope), a new instance will be created for each request. > 1) Use @SessionScope. See > http://www.stripesframework.org/display/stripes/annotation+reference#annotationreferen...@sessionscope > Only one instance of this ActionBean will exists for each session. Okey, this seems to be the only good approach for my problem I think, because everything stays the way it was before. Even the objects are the same (Reference). > 2) Use @Wizard. See > http://www.stripesframework.org/display/stripes/annotation+reference#annotationreferen...@wizard > Request parameters that are not hidden in page will be automatically added at > the end of the form in hidden fields. This is the closest solution to what > you want. This works for the most cases, but not for mine. Because I have to save a more complex object and references within this object have to keep alive too. So I think the way of buffering these object into hidden fields is not a good idea in this special case. > 3) Use @Session on the complex fields. See > http://www.stripesframework.org/display/stripes/Save+ActionBean+fields+in+session This is also possible for me, thanks for it. > 4) Save complex fields in session manually: > getContext().getSession().setAttribute(). Okey, this is the exact same way I'm doing it now. But not as nice as the annotaion things. > The reason FlashScope does not work is that it exists only to execute > redirect-after-post. > It is well documented here: > http://www.stripesframework.org/display/stripes/State+Management#StateManagement-RedirectafterPost Thanks for this explanation. I read this paragraph many times, but could not really understand it. Especially this sentence confused me: "This list is stored in flash scope so that the messages are available to the current request (should the ActionBean forward to a page) and in the next request (should the ActionBean redirect to a page)." and I thought this value will be available in the next request too, but thanks for the explanation anyway. Regards, Christoph > -----Original Message----- > From: Christoph Oberhofer [mailto:zitronenmeli...@gmx.at] > Sent: Monday, April 20, 2009 4:36 PM > To: stripes-users@lists.sourceforge.net > Subject: [Stripes-users] Problems with FlashScope - Lifetime of Object > > Hi there, > > What I want to achieve: > I want to make a wizard which goes from one step to another and saves a > complex object between all these requests. I thought about FlashScope but it > does not work the way I want. > > I have troubles when using the FlashScope - approach to store Objects between > two requests. The problem is, that the ActionBean which I flash is not > populated in the next request. Which means, regarding to the example at the > end, when the method "step2" is called, the Set is null. > But why? > > Anyone an idea how to store and repopulate ActionBeans for using ONE and the > SAME instance for the whole wizard? > > Thanks in advance, > Regards, > Christoph > > WizardTestActionBean.java > /*---------------------------------------------------------*/ > public class WizardTestActionBean extends BasicActionBean { > > private Set<String> setToLife = null; > > @HandlesEvent("step1") > public Resolution performStep1(){ > setToLive = new HashSet<String>(); > setToLive.add("Hello"); > setToLive.add("There"); > > return new RedirectResolution("/wizard/step2.jsp").flash(this); > } > > @HandlesEvent("step2") > public Resolution performStep2(){ > if(setToLive == null || setToLive.size() != 2){ > System.err.println("setToLive not populated"); > return getContext().getSourcePageResolution(); > } > return new RedirectResolution("/wizard/step3.jsp").flash(this); > } > } > /*---------------------------------------------------------*/ > > wizard/step1.jsp > > /*---------------------------------------------------------*/ > <body> > <stripes:form beanclass="itndb.stripes.WizardTestActionBean"> > <stripes:submit name="step1" value="next"></stripes:submit> > </stripes:form> > </body> > /*---------------------------------------------------------*/ > > wizard/step2.jsp > > /*---------------------------------------------------------*/ > <body> > <stripes:form beanclass="itndb.stripes.WizardTestActionBean"> > <stripes:submit name="step2" value="next"></stripes:submit> > </stripes:form> > </body> > > > ------------------------------------------------------------------------------ > Stay on top of everything new and different, both inside and around Java (TM) > technology - register by April 22, and save $200 on the JavaOne (SM) > conference, June 2-5, 2009, San Francisco. > 300 plus technical and hands-on sessions. Register today. > Use priority code J9JMT32. http://p.sf.net/sfu/p > _______________________________________________ > Stripes-users mailing list > Stripes-users@lists.sourceforge.net > https://lists.sourceforge.net/lists/listinfo/stripes-users > > ------------------------------------------------------------------------------ > Stay on top of everything new and different, both inside and > around Java (TM) technology - register by April 22, and save > $200 on the JavaOne (SM) conference, June 2-5, 2009, San Francisco. > 300 plus technical and hands-on sessions. Register today. > Use priority code J9JMT32. http://p.sf.net/sfu/p ------------------------------------------------------------------------------ Stay on top of everything new and different, both inside and around Java (TM) technology - register by April 22, and save $200 on the JavaOne (SM) conference, June 2-5, 2009, San Francisco. 300 plus technical and hands-on sessions. Register today. Use priority code J9JMT32. http://p.sf.net/sfu/p _______________________________________________ Stripes-users mailing list Stripes-users@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/stripes-users ------------------------------------------------------------------------------ Stay on top of everything new and different, both inside and around Java (TM) technology - register by April 22, and save $200 on the JavaOne (SM) conference, June 2-5, 2009, San Francisco. 300 plus technical and hands-on sessions. Register today. Use priority code J9JMT32. http://p.sf.net/sfu/p _______________________________________________ Stripes-users mailing list Stripes-users@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/stripes-users