You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@wicket.apache.org by Anna Hunecke <A....@topdesk.com> on 2012/07/10 11:36:31 UTC

How to force a page to re-render

Hi,

I'm trying to force a page to re-render everytime the user clicks the refresh button. Wicket sees the page as a stateful page, but I'm not interested at all in keeping this state.

What I would like to do is to get the newest data from the database on refresh and display it. I tried to use LoadableDetachableModels for this, but ran into trouble pretty soon. The main reason is that the data also determines visibility and styling of individual elements in the page which makes the code very complicated with lots of LoadableDetachableModels and Behaviors (The page is not exactly small). Also, the page size increases, and I want to avoid that.

So, I ended up in overwriting the renderPage() method in my page, throwing away all content and drawing it again. But I don't like this solution. Can I somehow force wicket to throw away the complete page and create a new one?

Regards,
Anna


---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscribe@wicket.apache.org
For additional commands, e-mail: users-help@wicket.apache.org


Re: How to force a page to re-render

Posted by Martin Grigorov <mg...@apache.org>.
On Tue, Jul 10, 2012 at 1:50 PM, Anna Hunecke <A....@topdesk.com> wrote:
> Hi,
>
> @Thomas: yeah, this is useful when opening the page from a link, but there I don't have a problem.
>
> @Martin, this works perfectly, thank you :)
> Just wondering: wouldn't it be better to override renderPage()?
> Because then you can just set the responsePage there and return immediately.
>
> @Override
> public void renderPage() {
>         if (hasBeenRendered()) {
>                 setResponsePage(getPageClass(), getPageParameters());
>         }
>         else {
>                 super.renderPage();
>         }
> }

If this works for you then use it.

>
> This is not possible in the onBeforeRender() method, because wicket forces me to call super.onBeforeRender().
> Which is probably not what I want, because then first the old page gets rendered and only after that it builds a new page (at least it seems to be that this is happening).
> Any insights?
>
> Best,
> Anna
>
> -----Original Message-----
> From: Martin Grigorov [mailto:mgrigorov@apache.org]
> Sent: Dienstag, 10. Juli 2012 12:08
> To: users@wicket.apache.org
> Subject: Re: How to force a page to re-render
>
> I think this is what she needs:
>
> MyPage.java:
>
> @Override
> public void onBeforeRender() {
>   if (hasBeenRendered()) {
>     setResponsePage(getPageClass(), getPageParameters());
>   }
> }
>
> On Tue, Jul 10, 2012 at 12:52 PM, Thomas Götz <to...@decoded.de> wrote:
>> What about this?
>>
>> Link link = new Link("link") {
>>     @Override
>>     public void onClick() {
>>         setResponsePage(new MyPage());
>>     }
>> };
>>
>>    -Tom
>>
>>
>>
>> On 10.07.2012, at 11:36, Anna Hunecke wrote:
>>
>>> Hi,
>>>
>>> I'm trying to force a page to re-render everytime the user clicks the refresh button. Wicket sees the page as a stateful page, but I'm not interested at all in keeping this state.
>>>
>>> What I would like to do is to get the newest data from the database on refresh and display it. I tried to use LoadableDetachableModels for this, but ran into trouble pretty soon. The main reason is that the data also determines visibility and styling of individual elements in the page which makes the code very complicated with lots of LoadableDetachableModels and Behaviors (The page is not exactly small). Also, the page size increases, and I want to avoid that.
>>>
>>> So, I ended up in overwriting the renderPage() method in my page, throwing away all content and drawing it again. But I don't like this solution. Can I somehow force wicket to throw away the complete page and create a new one?
>>>
>>> Regards,
>>> Anna
>>
>>
>> ---------------------------------------------------------------------
>> To unsubscribe, e-mail: users-unsubscribe@wicket.apache.org
>> For additional commands, e-mail: users-help@wicket.apache.org
>>
>
>
>
> --
> 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
>
>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: users-unsubscribe@wicket.apache.org
> For additional commands, e-mail: users-help@wicket.apache.org
>



-- 
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: How to force a page to re-render

Posted by Anna Hunecke <A....@topdesk.com>.
Hi,

@Thomas: yeah, this is useful when opening the page from a link, but there I don't have a problem.

@Martin, this works perfectly, thank you :)
Just wondering: wouldn't it be better to override renderPage()?
Because then you can just set the responsePage there and return immediately. 

@Override
public void renderPage() {
	if (hasBeenRendered()) {
		setResponsePage(getPageClass(), getPageParameters());
	}
	else {
		super.renderPage();
	}
}

This is not possible in the onBeforeRender() method, because wicket forces me to call super.onBeforeRender().
Which is probably not what I want, because then first the old page gets rendered and only after that it builds a new page (at least it seems to be that this is happening).
Any insights?

Best,
Anna

-----Original Message-----
From: Martin Grigorov [mailto:mgrigorov@apache.org] 
Sent: Dienstag, 10. Juli 2012 12:08
To: users@wicket.apache.org
Subject: Re: How to force a page to re-render

I think this is what she needs:

MyPage.java:

@Override
public void onBeforeRender() {
  if (hasBeenRendered()) {
    setResponsePage(getPageClass(), getPageParameters());
  }
}

On Tue, Jul 10, 2012 at 12:52 PM, Thomas Götz <to...@decoded.de> wrote:
> What about this?
>
> Link link = new Link("link") {
>     @Override
>     public void onClick() {
>         setResponsePage(new MyPage());
>     }
> };
>
>    -Tom
>
>
>
> On 10.07.2012, at 11:36, Anna Hunecke wrote:
>
>> Hi,
>>
>> I'm trying to force a page to re-render everytime the user clicks the refresh button. Wicket sees the page as a stateful page, but I'm not interested at all in keeping this state.
>>
>> What I would like to do is to get the newest data from the database on refresh and display it. I tried to use LoadableDetachableModels for this, but ran into trouble pretty soon. The main reason is that the data also determines visibility and styling of individual elements in the page which makes the code very complicated with lots of LoadableDetachableModels and Behaviors (The page is not exactly small). Also, the page size increases, and I want to avoid that.
>>
>> So, I ended up in overwriting the renderPage() method in my page, throwing away all content and drawing it again. But I don't like this solution. Can I somehow force wicket to throw away the complete page and create a new one?
>>
>> Regards,
>> Anna
>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: users-unsubscribe@wicket.apache.org
> For additional commands, e-mail: users-help@wicket.apache.org
>



-- 
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



---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscribe@wicket.apache.org
For additional commands, e-mail: users-help@wicket.apache.org


Re: How to force a page to re-render

Posted by Martin Grigorov <mg...@apache.org>.
I think this is what she needs:

MyPage.java:

@Override
public void onBeforeRender() {
  if (hasBeenRendered()) {
    setResponsePage(getPageClass(), getPageParameters());
  }
}

On Tue, Jul 10, 2012 at 12:52 PM, Thomas Götz <to...@decoded.de> wrote:
> What about this?
>
> Link link = new Link("link") {
>     @Override
>     public void onClick() {
>         setResponsePage(new MyPage());
>     }
> };
>
>    -Tom
>
>
>
> On 10.07.2012, at 11:36, Anna Hunecke wrote:
>
>> Hi,
>>
>> I'm trying to force a page to re-render everytime the user clicks the refresh button. Wicket sees the page as a stateful page, but I'm not interested at all in keeping this state.
>>
>> What I would like to do is to get the newest data from the database on refresh and display it. I tried to use LoadableDetachableModels for this, but ran into trouble pretty soon. The main reason is that the data also determines visibility and styling of individual elements in the page which makes the code very complicated with lots of LoadableDetachableModels and Behaviors (The page is not exactly small). Also, the page size increases, and I want to avoid that.
>>
>> So, I ended up in overwriting the renderPage() method in my page, throwing away all content and drawing it again. But I don't like this solution. Can I somehow force wicket to throw away the complete page and create a new one?
>>
>> Regards,
>> Anna
>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: users-unsubscribe@wicket.apache.org
> For additional commands, e-mail: users-help@wicket.apache.org
>



-- 
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: How to force a page to re-render

Posted by Thomas Götz <to...@decoded.de>.
What about this?

Link link = new Link("link") {
    @Override
    public void onClick() {
        setResponsePage(new MyPage());
    }
};

   -Tom



On 10.07.2012, at 11:36, Anna Hunecke wrote:

> Hi,
> 
> I'm trying to force a page to re-render everytime the user clicks the refresh button. Wicket sees the page as a stateful page, but I'm not interested at all in keeping this state.
> 
> What I would like to do is to get the newest data from the database on refresh and display it. I tried to use LoadableDetachableModels for this, but ran into trouble pretty soon. The main reason is that the data also determines visibility and styling of individual elements in the page which makes the code very complicated with lots of LoadableDetachableModels and Behaviors (The page is not exactly small). Also, the page size increases, and I want to avoid that.
> 
> So, I ended up in overwriting the renderPage() method in my page, throwing away all content and drawing it again. But I don't like this solution. Can I somehow force wicket to throw away the complete page and create a new one?
> 
> Regards,
> Anna


---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscribe@wicket.apache.org
For additional commands, e-mail: users-help@wicket.apache.org