I'm using 5.4 and I believe all you need to do is add the following code to your AppModule and it will handle redirection to an error page when ever you have an exception in production mode.
@Match("RequestExceptionHandler") @Order("after:requestExceptionHandler") public RequestExceptionHandler decorateProductionExceptionHandler( final Logger logger, final ResponseRenderer renderer, final ComponentSource componentSource, @Symbol(SymbolConstants.PRODUCTION_MODE) boolean productionMode, Object service) { if ( !productionMode ) { return null; } return new RequestExceptionHandler() { @Override public void handleRequestException(Throwable exception) throws IOException { logger.error("Unexpected runtime exception: " + exception.getMessage(), exception); ExceptionReporter index = (ExceptionReporter) componentSource.getPage("ErrorReport"); index.reportException(exception); renderer.renderPageMarkupResponse("ErrorReport"); } }; } public class ErrorReport implements ExceptionReporter { @Override public void reportException(Throwable exception) { } } On Wed, Jun 11, 2014 at 8:15 AM, Shaikh, Shahid <ssha...@navicure.com> wrote: > I am trying to have the Exception page shown in Tapestry when my > GridDataSource throws an exception. How do i catch a > ComponentEventException and have Tapestry redirect to the Exception page. > > Your help is much appreciated! > > Here is the logs.. > org.mortbay.thread.QueuedThreadPool$PoolThread.run(QueuedThreadPool.java:582) > Caused by: org.apache.tapestry5.runtime.ComponentEventException [at > classpath:com/navicure/ui/admin/pages/incoming/IncomingFilesPage.tml, line > 67] at > org.apache.tapestry5.internal.structure.ComponentPageElementImpl.processEventTriggering(ComponentPageElementImpl.java:1141) > at > org.apache.tapestry5.internal.structure.ComponentPageElementImpl.access$3100(ComponentPageElementImpl.java:61) > at > org.apache.tapestry5.internal.structure.ComponentPageElementImpl$5.invoke(ComponentPageElementImpl.java:1062) > at > org.apache.tapestry5.internal.structure.ComponentPageElementImpl$5.invoke(ComponentPageElementImpl.java:1059) > at > org.apache.tapestry5.ioc.internal.OperationTrackerImpl.invoke(OperationTrackerImpl.java:74) > ... 100 more Caused by: java.lang.NullPointerException at > com.navicure.ui.admin.tables.FragmentDataSource.getAvailableRows(FragmentDataSource.java:91) > at > org.got5.tapestry5.jquery.internal.DefaultDataTableModel.getResponse(DefaultDataTableModel.java:243) > at > org.got5.tapestry5.jquery.internal.DefaultDataTableModel.sendResponse(DefaultDataTableModel.java:375) > at > org.got5.tapestry5.jquery.components.DataTable.onData(DataTable.java:128) > at > org.got5.tapestry5.jquery.components.DataTable.dispatchComponentEvent(DataTable.java) > at > org.apache.tapestry5.internal.structure.ComponentPageElementImpl.dispatchEvent(ComponentPageElementImpl.java:940) > at > org.apache.tapestry5.internal.structure.ComponentPageElementImpl.processEventTriggering(ComponentPageElementImpl.java:1117) > ... 104 more > > Here is my object that implements ExceptionReporter > > package com.navicure.ui.admin.pages; > > import java.io.PrintWriter; > import java.io.StringWriter; > import java.util.Date; > > import org.apache.log4j.Logger; > import org.apache.tapestry5.annotations.Log; > import org.apache.tapestry5.annotations.Property; > import org.apache.tapestry5.ioc.annotations.Inject; > import org.apache.tapestry5.services.ExceptionReporter; > import org.apache.tapestry5.services.ajax.AjaxResponseRenderer; > import org.apache.tapestry5.services.ajax.JavaScriptCallback; > import org.apache.tapestry5.services.javascript.JavaScriptSupport; > > public class ExceptionReport implements ExceptionReporter { > > private static Logger log = Logger.getLogger(ExceptionReport.class); > > > @Property > private Date filterToDate; > > @Property > private Throwable exception; > > @Inject > private AjaxResponseRenderer ajaxResponseRenderer; > > @Property > private String messageStackTrace; > > @Override > public void reportException(Throwable exception) { > this.exception = exception; > log.error(exception); > this.messageStackTrace = this.getStackMessageTrace(); > } > > > private String getStackMessageTrace() > { > StringWriter errors = new StringWriter(); > exception.printStackTrace(new PrintWriter(errors)); > return errors.toString(); > } > > > } > > > --------------------------------------------------------------------- > To unsubscribe, e-mail: users-unsubscr...@tapestry.apache.org > For additional commands, e-mail: users-h...@tapestry.apache.org > > -- George Christman www.CarDaddy.com P.O. Box 735 Johnstown, New York