IRequestMapper that ignores page version
Hello, I have a problem similar to the one outlined here: http://apache-wicket.1842946.n4.nabble.com/Migrating-from-1-4-16-to-1-5-RC3-problem-when-trying-to-avoid-pages-caching-not-calling-the-construc-td3463183.html. I have a page that uses a lot of Ajax (and is thus stateful/versioned), but I need its constructor to be called any time the page is requested. Otherwise, if the user lands on the page via the back button, it will not be rendered correctly. Anyway, I'm looking into creating a custom IRequestMapper, per Martin's suggestion in the Nabble thread. However, I don't know where to start. Should I extend one of the existing mappers (e.g. MountedMapper), or should I create an entirely new implementation of IRequestMapper? In either case, how do I make sure that I don't screw up handling of listener links for ajax actions on the page? In other words, how do I create a reliable IRequestMapper for a page that, when requested, always re-renders itself? If there's a different way to accomplish this (i.e. without creating a custom IRequestMapper or making the page stateless), I'd love to know. Thanks for your help! -Allen
Re: IRequestMapper that ignores page version
Hi, Here is an idea (again from me:-) ): Override MountedMapper and in #mapRequest(Request) do: if (((WebRequest) request).isAjax()) return super.mapRequest(request); // else url = request.getUrl(); info = getPageComponentInfo(url); if (info != null) url.removeQueryParam(info.toString()); return super.mapRequest(request) This will cut the special parameter that brings the page info On Mon, Dec 5, 2011 at 8:08 PM, Allen Gilbert allen.gilb...@doane.edu wrote: Hello, I have a problem similar to the one outlined here: http://apache-wicket.1842946.n4.nabble.com/Migrating-from-1-4-16-to-1-5-RC3-problem-when-trying-to-avoid-pages-caching-not-calling-the-construc-td3463183.html. I have a page that uses a lot of Ajax (and is thus stateful/versioned), but I need its constructor to be called any time the page is requested. Otherwise, if the user lands on the page via the back button, it will not be rendered correctly. Anyway, I'm looking into creating a custom IRequestMapper, per Martin's suggestion in the Nabble thread. However, I don't know where to start. Should I extend one of the existing mappers (e.g. MountedMapper), or should I create an entirely new implementation of IRequestMapper? In either case, how do I make sure that I don't screw up handling of listener links for ajax actions on the page? In other words, how do I create a reliable IRequestMapper for a page that, when requested, always re-renders itself? If there's a different way to accomplish this (i.e. without creating a custom IRequestMapper or making the page stateless), I'd love to know. Thanks for your help! -Allen -- Martin Grigorov jWeekend Training, Consulting, Development http://jWeekend.com - To unsubscribe, e-mail: users-unsubscr...@wicket.apache.org For additional commands, e-mail: users-h...@wicket.apache.org
Re: IRequestMapper that ignores page version
Martin, I had to modify your example to get it to work, as request.getUrl() actually returns a new Url instance when it's called. Here's what I settled on: @Override public IRequestHandler mapRequest(Request request) { Request requestToMap = request; if ((request instanceof WebRequest) !((WebRequest) request).isAjax()) { PageComponentInfo info = getPageComponentInfo(request.getUrl()); if (info != null) { Url url = request.getUrl(); url.removeQueryParameters(info.toString()); requestToMap = request.cloneWithUrl(url); } } return super.mapRequest(requestToMap); } Does anyone see any issues with this approach? Thanks! -Allen On Mon, Dec 5, 2011 at 2:28 PM, Martin Grigorov mgrigo...@apache.orgwrote: Hi, Here is an idea (again from me:-) ): Override MountedMapper and in #mapRequest(Request) do: if (((WebRequest) request).isAjax()) return super.mapRequest(request); // else url = request.getUrl(); info = getPageComponentInfo(url); if (info != null) url.removeQueryParam(info.toString()); return super.mapRequest(request) This will cut the special parameter that brings the page info On Mon, Dec 5, 2011 at 8:08 PM, Allen Gilbert allen.gilb...@doane.edu wrote: Hello, I have a problem similar to the one outlined here: http://apache-wicket.1842946.n4.nabble.com/Migrating-from-1-4-16-to-1-5-RC3-problem-when-trying-to-avoid-pages-caching-not-calling-the-construc-td3463183.html . I have a page that uses a lot of Ajax (and is thus stateful/versioned), but I need its constructor to be called any time the page is requested. Otherwise, if the user lands on the page via the back button, it will not be rendered correctly. Anyway, I'm looking into creating a custom IRequestMapper, per Martin's suggestion in the Nabble thread. However, I don't know where to start. Should I extend one of the existing mappers (e.g. MountedMapper), or should I create an entirely new implementation of IRequestMapper? In either case, how do I make sure that I don't screw up handling of listener links for ajax actions on the page? In other words, how do I create a reliable IRequestMapper for a page that, when requested, always re-renders itself? If there's a different way to accomplish this (i.e. without creating a custom IRequestMapper or making the page stateless), I'd love to know. Thanks for your help! -Allen -- Martin Grigorov jWeekend Training, Consulting, Development http://jWeekend.com - To unsubscribe, e-mail: users-unsubscr...@wicket.apache.org For additional commands, e-mail: users-h...@wicket.apache.org