No it doesn't hit the browser cache.
It's actually recreating a new Page. We've put breakpoints in Wicket to establish that.
In PageProvider is trying to create a new Instance see the stacktrace.

The following stacktrace is taken when we use the 'backspace' or 'back button' in the browser after a session has expired.

[2012-12-12 14:42:11,535 TP-Processor11 ERROR org.apache.wicket.DefaultExceptionMapper:$L] Unexpected error occurred

org.apache.wicket.WicketRuntimeException: Unable to create page from class org.bar.bla.FooPage. Class does not have a visible default contructor.

at org.apache.wicket.session.DefaultPageFactory.newPage(DefaultPageFactory.java:79)

at org.apache.wicket.DefaultMapperContext.newPageInstance(DefaultMapperContext.java:133)

at org.apache.wicket.core.request.handler.PageProvider.resolvePageInstance(PageProvider.java:278)

at org.apache.wicket.core.request.handler.PageProvider.getPageInstance(PageProvider.java:166)

at org.apache.wicket.request.handler.render.PageRenderer.getPage(PageRenderer.java:78)

at org.apache.wicket.request.handler.render.WebPageRenderer.renderPage(WebPageRenderer.java:94)

at org.apache.wicket.request.handler.render.WebPageRenderer.respond(WebPageRenderer.java:244)

at org.apache.wicket.core.request.handler.RenderPageRequestHandler.respond(RenderPageRequestHandler.java:165)

at org.apache.wicket.request.cycle.RequestCycle$HandlerExecutor.respond(RequestCycle.java:814)

at org.apache.wicket.request.RequestHandlerStack.execute(RequestHandlerStack.java:64)

at org.apache.wicket.request.cycle.RequestCycle.execute(RequestCycle.java:253)

at org.apache.wicket.request.cycle.RequestCycle.processRequest(RequestCycle.java:210)

at org.apache.wicket.request.cycle.RequestCycle.processRequestAndDetach(RequestCycle.java:281)

at org.apache.wicket.protocol.http.WicketFilter.processRequest(WicketFilter.java:188)

at org.apache.wicket.protocol.http.WicketFilter.doFilter(WicketFilter.java:245)

....

Not that in this case we have a page mounted with no Default Constructor or Constructor with page parameters because we only want a 'nice' url for this page.

We also have situations where we have multiple entry points for a Web application where one page can be reached with page parameters or through a constructor taking an object. In both cases we don't want these pages to be recreated when the session is expired.

Thijs

On 12-12-2012 9:40, Martin Grigorov wrote:
It seems that the browser tries to load the page from its cache.
I think you need to set proper cache headers to always ask the server
instead of using the local data.


On Tue, Dec 11, 2012 at 6:59 PM, Rob Sonke <r...@tigrou.nl> wrote:

Yes I know but by using the back button it seems to be ignored. Like it
tries to serve the same page no matter we have a session or not.


On Tue, Dec 11, 2012 at 9:59 AM, Martin Grigorov <mgrigo...@apache.org
wrote:
On Mon, Dec 10, 2012 at 9:04 AM, Rob Sonke <r...@tigrou.nl> wrote:

Last week we fixed an issue with Wicket 6 where mounted pages were
being
reconstructed after the session expired. That was due to this (new)
setting
which we set to false now:

getPageSettings().setRecreateMountedPagesAfterExpiry(false);

This worked perfectly for clicking on (ajax) links but, this doesn't
seem
to work when I use the back button of the browser after the session
expired. What happens is that Wicket tries to reconstruct the previous
(mounted bookmarkable) page. But that's failing in our case because we
dont
support that as every page needs session information.

Am I doing something wrong? As I would expect a PageExpiredException in
this case.

If you need PEE then this is the correct setting.




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




Reply via email to