Hi, I need to enrich the ExceptionErrorPage with some additional information. Currently I have a working solution but I'm not sure, if this is the correct way.
My first try was (in my Application-class): /** * Define our own exception mapper. */ @Override public IProvider<IExceptionMapper> getExceptionMapperProvider() { return new IProvider<IExceptionMapper>() { @Override public IExceptionMapper get() { return new MyCustomExceptionMapper(); } }; } /** * Our own exception mapper, so that we can display further information on the error page * in case of an exception. */ public class MyCustomExceptionMapper extends DefaultExceptionMapper { @Override public IRequestHandler map(Exception e) { return new RenderPageRequestHandler(new PageProvider(new MyErrorPage(e, super.extractCurrentPage()))); } } MyErrorPage extends from ExceptionErrorPage and overwrites getErrorMessage(Throwable throwable). During development this works just fine but it was not feeling right. Therefore I proposed a patch to implement a hook-method (https://issues.apache.org/jira/browse/WICKET-6240) where Martin mentioned: "The recommended way to do this is to register custom IRequestCycleListener and override its #onException() method. If the exception is IWicketInternalException then return null, otherwise return RenderPageRequestHandler with a custom page that renders all the information you need." So, at the moment I'm having in my init-method: getRequestCycleListeners().add(new AbstractRequestCycleListener() { @Override public IRequestHandler onException(RequestCycle cycle, Exception ex) { if (ex instanceof IWicketInternalException) { return null; } else { Page page = null; IRequestHandler handler = cycle.getActiveRequestHandler(); if (handler == null) { handler = cycle.getRequestHandlerScheduledAfterCurrent(); } if (handler instanceof IPageRequestHandler) { IPageRequestHandler pageRequestHandler = (IPageRequestHandler) handler; page = (Page) pageRequestHandler.getPage(); } return new RenderPageRequestHandler(new PageProvider(new MyErrorPage(ex, page))); } } }); The code to retrieve the page comes basically from DefaultExceptionMapper#extractCurrentPage(). My question: is this the way to go? Or can I simplify the code any further? Joachim --------------------------------------------------------------------- To unsubscribe, e-mail: users-unsubscr...@wicket.apache.org For additional commands, e-mail: users-h...@wicket.apache.org