You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@wicket.apache.org by Sylvain Vieujot <sy...@gmail.com> on 2011/09/07 10:51:55 UTC
Stateless page with an auto update section
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.
If in MyPanel, I have :
class MyPanel{
...
@Override
public boolean getStatelessHint(@SuppressWarnings( "unused" )
Component component) {
return true;
}
...
}
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.
Re: Stateless page with an auto update section
Posted by Martin Grigorov <mg...@apache.org>.
See jolira-tools Wicket Ajax stateless components and behaviors.
You'll have to roll your own timer behavior.
On Wed, Sep 7, 2011 at 6:20 PM, Sylvain Vieujot <sv...@apache.org> wrote:
> 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
> <sy...@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.
>
>
>
>
--
Martin Grigorov
jWeekend
Training, Consulting, Development
http://jWeekend.com
---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscribe@wicket.apache.org
For additional commands, e-mail: users-help@wicket.apache.org
Re: Stateless page with an auto update section
Posted by Sylvain Vieujot <sv...@apache.org>.
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
> <sy...@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.
>
>
>
Re: Stateless page with an auto update section
Posted by Martin Grigorov <mg...@apache.org>.
Hi,
A Component (inc. Page) is stateless by nature.
On Wed, Sep 7, 2011 at 11:51 AM, Sylvain Vieujot
<sy...@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.
--
Martin Grigorov
jWeekend
Training, Consulting, Development
http://jWeekend.com
---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscribe@wicket.apache.org
For additional commands, e-mail: users-help@wicket.apache.org