Hi,

In 1.5 there is org.apache.wicket.request.http.WebResponse.disableCaching()
which does the same as you did. But this is not related to your problem.

When reloading the page Wicket will re-render the same page if it is
stateful, i.e. there is a special parameter in the URL, e.g.
?2&something=else - here '2' means the second version.
To reload a new instance of the page it has to be either stateless or
bookmarkable.
By default bookmarkable means loaded with BookmarkableMapper, the URL looks
like /wicket/bookmarkable/com.example.MyPage, but if you don't like this URL
then you can create your own IRequestMapper which will be something between
BookmarkableMapper and MountedMapper.


On Wed, Apr 20, 2011 at 5:29 PM, Ismael Hasan <[email protected]
> wrote:

> Hello.
>
> I am facing the following problem when migrating from Wicket 1.4.16 to
> 1.5 RC3. First, I'll explain what I want to accomplish, how I do that
> in 1.4.16 and the result obtained. Next, I'll explain how I try to do
> the same wich 1.5 RC3, and which are the results I get.
>
> 1.- I want all of the pages in my web application to avoid caching, so
> they are loaded every time I use the back or reload buttons in the web
> application. To accomplish this, I use the following code in my
> BasePage class:
>        @Override
>        protected void configureResponse() {
>                super.configureResponse();
>                WebResponse response =
> getWebRequestCycle().getWebResponse();
>                response.setHeader("Cache-Control",
>                                "no-cache, max-age=0,must-revalidate,
> no-store");
>        }
> By doing this, every time I reload a page from a browser, and every
> time I use the back button on the browser, the page is fully reloaded:
> it's constructor in the Java class is called, and every item in the
> page is reloaded.
>
> 2.- To accomplish the same thing in Wicket 1.5, I use following code
> in my BasePage class:
>        @Override
>        protected void configureResponse() {
>                super.configureResponse();
>                WebResponse response = (WebResponse)
> getRequestCycle().getResponse();
>                response.setHeader("Cache-Control",
>                                "no-cache, max-age=0,must-revalidate,
> no-store");
>        }
> The problem is that when I hit the back button or the reload button in
> the browser, the constructor of the page is not called, and so the
> page is not fully reloaded. If the back button is used, the
> applications throws  "java.lang.ClassCastException:
> javax.swing.tree.DefaultMutableTreeNode cannot be cast to
> java.lang.String".I think this is motivated because the tree is
> created via Ajax, and since the constructor of the page is not called,
> it is not initialized when hitting the back button and tries to create
> the tree using a null model.
>
> May the root problem has something to do with the "must-revalidate"
> option? In the caching tutorial of wicket 1.5 it explicitly says
> "We are not sending Cache-Control: must-revalidate anymore since it
> implies the resource can theoretically be cached when in fact it must
> not."
> If this is the problem, is there some workaround to obtain the same
> result as with the "must-revalidate" option?
>
>
> Any advice or hint will be appreciated, and thank you very much for
> your attention.
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: [email protected]
> For additional commands, e-mail: [email protected]
>
>


-- 
Martin Grigorov
jWeekend
Training, Consulting, Development
http://jWeekend.com <http://jweekend.com/>

Reply via email to