The component is indeed stateless, but adding the
AjaxSelfUpdatingTimerBehavior prevents it to staying stateless and
generates an exception like :

Last cause: '[Header [Component id = header]]' claims to be stateless
but isn't. Possible reasons: no stateless hint, statefull behaviors

WicketMessage: Error attaching this container for rendering: [Page class = 
com.windsOfDubai.web.HomePage, id = 2, render count = 1]


I am trying to add the self updating behaviour whilst keeping the page
stateless.


On Wed, 2011-09-07 at 15:09 +0300, Martin Grigorov wrote:

> Hi,
> 
> A Component (inc. Page) is stateless by nature.
> 
> On Wed, Sep 7, 2011 at 11:51 AM, Sylvain Vieujot
> <sylvain.vieu...@gmail.com> wrote:
> > Hello,
> >
> > I have a stateless page, and I would like to periodically refresh a section
> > of this page.
> > If I do :
> >
> > add( new MyPanel( "header" )
> >         .setOutputMarkupId( true )
> >         .add( new AjaxSelfUpdatingTimerBehavior( Duration.minutes( 2 ) )
> >       );
> >
> > The page becomes stateless.
> Adding Ajax**Behavior to it makes it stateful because this behavior
> needs to do the callback (onTimer() in your case)
> >
> > If in MyPanel, I have :
> > class MyPanel{
> >      ...
> >      @Override
> >      public boolean getStatelessHint(@SuppressWarnings( "unused" ) Component
> > component) {
> >           return true;
> >      }
> This makes no difference, since this is the default.
> See org.apache.wicket.Component.getStatelessHint()
> 
> But the actual method that decides whether a component is stateless
> is: org.apache.wicket.Component.isStateless()
> >      ...
> > }
> >
> > The update does not work as the expected component's HTML id does not remain
> > constant :
> >
> > Wicket.Ajax: Wicket.Ajax.Call.processComponent: Component with id
> > [[header2]] was not found while trying to perform markup update. Make sure
> > you called component.setOutputMarkupId(true) on the component whose markup
> > you are trying to update. console.error('Wicket.Ajax: ' + msg);
> > I also tried to use .setVersioned( false ) on both the component and the
> > page, but without success.
> > Is there a way to do this ?
> >
> > Thank you,
> >
> > Sylvain.
> 
> 
> 

Attachment: signature.asc
Description: This is a digitally signed message part

Reply via email to