From dbe6e5e828ab07744ff76fc60ba8037229caf27e Mon Sep 17 00:00:00 2001 From: Manuel Rego Casasnovas Date: Wed, 13 Apr 2011 18:21:51 +0200 Subject: [PATCH] Improved information showed when some runtime error happens. FEA: ItEr74S04BugFixing --- .../web/error/PageForErrorOnEvent.java | 22 +++++++--- .../src/main/webapp/common/error.zul | 42 +++++++++++++----- .../src/main/webapp/common/event_error.zul | 43 ++++++++++++++----- 3 files changed, 79 insertions(+), 28 deletions(-) diff --git a/navalplanner-webapp/src/main/java/org/navalplanner/web/error/PageForErrorOnEvent.java b/navalplanner-webapp/src/main/java/org/navalplanner/web/error/PageForErrorOnEvent.java index ff140815c..9dc99d1a5 100644 --- a/navalplanner-webapp/src/main/java/org/navalplanner/web/error/PageForErrorOnEvent.java +++ b/navalplanner-webapp/src/main/java/org/navalplanner/web/error/PageForErrorOnEvent.java @@ -21,14 +21,18 @@ package org.navalplanner.web.error; +import java.io.PrintWriter; +import java.io.StringWriter; +import java.io.Writer; + import javax.servlet.http.HttpServletRequest; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; -import org.navalplanner.web.common.components.I18n; import org.zkoss.zk.ui.Component; import org.zkoss.zk.ui.Executions; import org.zkoss.zk.ui.util.GenericForwardComposer; +import org.zkoss.zul.api.Textbox; public class PageForErrorOnEvent extends GenericForwardComposer { @@ -36,15 +40,13 @@ public class PageForErrorOnEvent extends GenericForwardComposer { private Component modalWindow; + private Textbox stacktrace; + @Override public void doAfterCompose(Component comp) throws Exception { super.doAfterCompose(comp); logError(); - modalWindow = comp; - I18n i18NMessge = (I18n) modalWindow.getFellowIfAny("message"); - if (i18NMessge != null) { - i18NMessge.forceLoad(); - } + stacktrace.setValue(getStacktrace()); } private void logError() { @@ -70,4 +72,12 @@ public class PageForErrorOnEvent extends GenericForwardComposer { Executions.sendRedirect("/"); } + private String getStacktrace() { + Throwable exception = (Throwable) Executions.getCurrent().getAttribute( + "javax.servlet.error.exception"); + Writer stacktrace = new StringWriter(); + exception.printStackTrace(new PrintWriter(stacktrace)); + return stacktrace.toString(); + } + } diff --git a/navalplanner-webapp/src/main/webapp/common/error.zul b/navalplanner-webapp/src/main/webapp/common/error.zul index 1dc4a141f..a89858afd 100644 --- a/navalplanner-webapp/src/main/webapp/common/error.zul +++ b/navalplanner-webapp/src/main/webapp/common/error.zul @@ -18,24 +18,44 @@ You should have received a copy of the GNU Affero General Public License along with this program. If not, see . --> - + - - - - - + sclass="errorbox" width="800px"> + + + + + + + + + + + + + + + + + + + + + diff --git a/navalplanner-webapp/src/main/webapp/common/event_error.zul b/navalplanner-webapp/src/main/webapp/common/event_error.zul index 430701c95..ce77affe8 100644 --- a/navalplanner-webapp/src/main/webapp/common/event_error.zul +++ b/navalplanner-webapp/src/main/webapp/common/event_error.zul @@ -19,16 +19,37 @@ along with this program. If not, see . --> - - - - - - - + + + + + + + + + + + + + + + + + + + + +