Hi,

Yes, you have to register it.
It is not registered by default because not everyone needs it.

On Wed, Aug 29, 2012 at 9:01 AM, James Eliyezar <[email protected]> wrote:
> Guys,
>
> From the javadoc of IRequestCycleListener, I found that we have to
> explicitly register the implementations.
> I thought PageRequestHandlerTracker would have been registered by default
> as that's from wicket.
> So, when I registered it manually, it worked as expected. This is how I
> registered it in the wicket application's "init" method.
>
>     @Override
>>     public void init()
>>     {
>>         super.init();
>>         getRequestCycleListeners().add(new PageRequestHandlerTracker());
>>     }
>>
>
> On Wed, Aug 29, 2012 at 2:41 PM, James Eliyezar <[email protected]> wrote:
>
>> Should I register PageRequestHandlerTracker anywhere?
>>
>>
>> On Wed, Aug 29, 2012 at 2:40 PM, James Eliyezar <[email protected]>wrote:
>>
>>> Alright Paul.
>>>
>>> This is my code:
>>>
>>> public class HomePage extends WebPage
>>>> {
>>>>     private static Logger logger =
>>>> LoggerFactory.getLogger(HomePage.class);
>>>>     private static final long serialVersionUID = 1L;
>>>>
>>>>     public HomePage(final PageParameters parameters)
>>>>     {
>>>>         add(new Label("version",
>>>> getApplication().getFrameworkSettings().getVersion()));
>>>>         try {
>>>>             IPageRequestHandler lastHandler =
>>>> PageRequestHandlerTracker.getLastHandler(RequestCycle.get());
>>>>             logger.debug("Last handler: {}", lastHandler);
>>>>             logger.debug("Requested page", lastHandler.getPage());
>>>>         } catch (Exception ex) {
>>>>             logger.error("Error", ex);
>>>>         }
>>>>     }
>>>> }
>>>>
>>>>
>>> This is the log with exception stack trace:
>>>
>>> [INFO] Started Jetty Server
>>>> DEBUG - HomePage                   - Last handler: null
>>>> ERROR - DefaultExceptionMapper     - Unexpected error occurred
>>>> org.apache.wicket.WicketRuntimeException: Can't instantiate page using
>>>> constructor 'public
>>>> org.apache.wicket.quickstart.HomePage(org.apache.wicket.request.mapper.parameter.PageParameters)'
>>>> and argument ''. Might be it doesn't exist, may be it is not visible
>>>> (public).
>>>>     at
>>>> org.apache.wicket.session.DefaultPageFactory.newPage(DefaultPageFactory.java:193)
>>>>     at
>>>> org.apache.wicket.session.DefaultPageFactory.newPage(DefaultPageFactory.java:76)
>>>>     at
>>>> org.apache.wicket.session.DefaultPageFactory.newPage(DefaultPageFactory.java:46)
>>>>     at
>>>> org.apache.wicket.DefaultMapperContext.newPageInstance(DefaultMapperContext.java:103)
>>>>     at
>>>> org.apache.wicket.request.handler.PageProvider.resolvePageInstance(PageProvider.java:274)
>>>>     at
>>>> org.apache.wicket.request.handler.PageProvider.getPageInstance(PageProvider.java:165)
>>>>     at
>>>> org.apache.wicket.request.handler.render.PageRenderer.getPage(PageRenderer.java:78)
>>>>     at
>>>> org.apache.wicket.request.handler.render.WebPageRenderer.renderPage(WebPageRenderer.java:93)
>>>>     at
>>>> org.apache.wicket.request.handler.render.WebPageRenderer.respond(WebPageRenderer.java:237)
>>>>     at
>>>> org.apache.wicket.request.handler.RenderPageRequestHandler.respond(RenderPageRequestHandler.java:167)
>>>>     at
>>>> org.apache.wicket.request.cycle.RequestCycle$HandlerExecutor.respond(RequestCycle.java:784)
>>>>     at
>>>> org.apache.wicket.request.RequestHandlerStack.execute(RequestHandlerStack.java:64)
>>>>     at
>>>> org.apache.wicket.request.cycle.RequestCycle.execute(RequestCycle.java:255)
>>>>     at
>>>> org.apache.wicket.request.cycle.RequestCycle.processRequest(RequestCycle.java:212)
>>>>     at
>>>> org.apache.wicket.request.cycle.RequestCycle.processRequestAndDetach(RequestCycle.java:283)
>>>>     at
>>>> org.apache.wicket.protocol.http.WicketFilter.processRequest(WicketFilter.java:188)
>>>>     at
>>>> org.apache.wicket.protocol.http.WicketFilter.doFilter(WicketFilter.java:244)
>>>>     at
>>>> org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1326)
>>>>     at
>>>> org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:479)
>>>>     at
>>>> org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:119)
>>>>     at
>>>> org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:520)
>>>>     at
>>>> org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:227)
>>>>     at
>>>> org.eclipse.jetty.server.handler.ContextHandler.__doHandle(ContextHandler.java:940)
>>>>     at
>>>> org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java)
>>>>     at
>>>> org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:409)
>>>>     at
>>>> org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:186)
>>>>     at
>>>> org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:874)
>>>>     at
>>>> org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:117)
>>>>     at
>>>> org.eclipse.jetty.server.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:250)
>>>>     at
>>>> org.eclipse.jetty.server.handler.HandlerCollection.handle(HandlerCollection.java:149)
>>>>     at
>>>> org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:110)
>>>>     at org.eclipse.jetty.server.Server.handle(Server.java:349)
>>>>     at
>>>> org.eclipse.jetty.server.HttpConnection.handleRequest(HttpConnection.java:441)
>>>>     at
>>>> org.eclipse.jetty.server.HttpConnection$RequestHandler.headerComplete(HttpConnection.java:904)
>>>>     at org.eclipse.jetty.http.HttpParser.parseNext(HttpParser.java:565)
>>>>     at
>>>> org.eclipse.jetty.http.HttpParser.parseAvailable(HttpParser.java:217)
>>>>     at
>>>> org.eclipse.jetty.server.AsyncHttpConnection.handle(AsyncHttpConnection.java:46)
>>>>     at
>>>> org.eclipse.jetty.io.nio.SelectChannelEndPoint.handle(SelectChannelEndPoint.java:545)
>>>>     at
>>>> org.eclipse.jetty.io.nio.SelectChannelEndPoint$1.run(SelectChannelEndPoint.java:43)
>>>>     at
>>>> org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:598)
>>>>     at
>>>> org.eclipse.jetty.util.thread.QueuedThreadPool$3.run(QueuedThreadPool.java:533)
>>>>     at java.lang.Thread.run(Thread.java:662)
>>>> Caused by: java.lang.reflect.InvocationTargetException
>>>>     at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native
>>>> Method)
>>>>     at
>>>> sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39)
>>>>     at
>>>> sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27)
>>>>     at java.lang.reflect.Constructor.newInstance(Constructor.java:513)
>>>>     at
>>>> org.apache.wicket.session.DefaultPageFactory.newPage(DefaultPageFactory.java:170)
>>>>     ... 41 more
>>>> Caused by: java.lang.NullPointerException
>>>>     at org.apache.wicket.quickstart.HomePage.<init>(HomePage.java:22)
>>>>     ... 46 more
>>>>
>>>>
>>> I've attached a quickstart project to recreate the problem.
>>>
>>>    - Unzip it
>>>    - mvn clean package jetty:run
>>>    - Point your browser to http://localhost:8080
>>>    - Watch out the console for the exception.
>>>
>>>
>>> On Wed, Aug 29, 2012 at 12:53 PM, Paul Borș <[email protected]> wrote:
>>>
>>>> Might help if you provide a stack trace for the NPE :)
>>>>
>>>> Have a great day,
>>>>     Paul Borș
>>>>
>>>> On Aug 29, 2012, at 0:37, James Eliyezar <[email protected]> wrote:
>>>>
>>>> > Hi,
>>>> >
>>>> > We recently migrated our application to wicket-1.5.8.
>>>> >
>>>> > We have an audit aspect based on Spring AOP that shall log the actions
>>>> > performed in the current page.
>>>> > In wicket 1.4 we use to get that like
>>>> > "RequestCycle.get().getResponsePage()".
>>>> >
>>>> > This has changed and I know that wicket 1.5 doesn't support this
>>>> anymore.
>>>> >
>>>> > The suggested method as per the wiki is to "use a custom
>>>> > RequestCycleListener<
>>>> https://cwiki.apache.org/WICKET/requestcycle-in-wicket-15.html>
>>>> > ".
>>>> >
>>>> > Fortunately, as highlighted in the mailing list, there is a new class
>>>> in
>>>> > wicket 1.5.8 named
>>>> > PageRequestHandlerTracker<
>>>> http://apache-wicket.1842946.n4.nabble.com/Interpolate-response-with-IResponseFilter-td4651476.html
>>>> >to
>>>> > meet this common requirement.
>>>> >
>>>> > However, when we use
>>>> > PageRequestHandlerTracker.getLastHandler(RequestCycle.get()),
>>>> > and then attempt to call #getPage(), a null pointer exception is
>>>> thrown.
>>>> >
>>>> > Am I doing something wrong here? Please give your suggestions.
>>>> >
>>>> > --
>>>> > Thanks & regards
>>>> > James Selvakumar
>>>> > mcruncher.com
>>>>
>>>> ---------------------------------------------------------------------
>>>> To unsubscribe, e-mail: [email protected]
>>>> For additional commands, e-mail: [email protected]
>>>>
>>>>
>>>
>>>
>>> --
>>> Thanks & regards
>>> James Selvakumar
>>> mcruncher.com
>>>
>>>
>>
>>
>> --
>> Thanks & regards
>> James Selvakumar
>> mcruncher.com
>>
>>
>
>
> --
> Thanks & regards
> James Selvakumar
> mcruncher.com



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

---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to