"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

Reply via email to