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
new file mode 100644
index 000000000..91c042e33
--- /dev/null
+++ b/navalplanner-webapp/src/main/java/org/navalplanner/web/error/PageForErrorOnEvent.java
@@ -0,0 +1,48 @@
+package org.navalplanner.web.error;
+
+import javax.servlet.http.HttpServletRequest;
+
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.zkoss.zk.ui.Component;
+import org.zkoss.zk.ui.Executions;
+import org.zkoss.zk.ui.util.GenericForwardComposer;
+
+public class PageForErrorOnEvent extends GenericForwardComposer {
+
+ private static final Log LOG = LogFactory.getLog(PageForErrorOnEvent.class);
+
+ private Component modalWindow;
+
+ @Override
+ public void doAfterCompose(Component comp) throws Exception {
+ super.doAfterCompose(comp);
+ logError();
+ modalWindow = comp;
+
+ }
+
+ private void logError() {
+ Throwable exception = (Throwable) Executions.getCurrent().getAttribute(
+ "javax.servlet.error.exception");
+ String errorMessage = (String) Executions.getCurrent().getAttribute(
+ "javax.servlet.error.message");
+ LOG.error(errorMessage, exception);
+ }
+
+ public void onClick$continueWorking() {
+ modalWindow.detach();
+ }
+
+ public void onClick$reload() {
+ Executions.sendRedirect(null);
+ }
+
+ public void onClick$quitSession() {
+ HttpServletRequest nativeRequest = (HttpServletRequest) Executions
+ .getCurrent().getNativeRequest();
+ nativeRequest.getSession().invalidate();
+ Executions.sendRedirect("/");
+ }
+
+}
diff --git a/navalplanner-webapp/src/main/webapp/WEB-INF/web.xml b/navalplanner-webapp/src/main/webapp/WEB-INF/web.xml
index 65d2b36ba..2bcaec1ac 100644
--- a/navalplanner-webapp/src/main/webapp/WEB-INF/web.xml
+++ b/navalplanner-webapp/src/main/webapp/WEB-INF/web.xml
@@ -1,91 +1,103 @@
- helloworld
+ helloworld
-
-
- contextConfigLocation
- classpath*:/navalplanner-business-spring-config.xml classpath:/navalplanner-webapp-spring-config.xml classpath*:/navalplanner-override-spring-config.xml
-
+
+
+ contextConfigLocation
+ classpath*:/navalplanner-business-spring-config.xml classpath:/navalplanner-webapp-spring-config.xml classpath*:/navalplanner-override-spring-config.xml
+
-
-
-
-
- dspLoader
- org.zkoss.web.servlet.dsp.InterpreterServlet
-
-
- dspLoader
- *.dsp
-
-
+
+
+
+
+ dspLoader
+ org.zkoss.web.servlet.dsp.InterpreterServlet
+
+
+ dspLoader
+ *.dsp
+
+
-
-
-
- Used to cleanup when a session is destroyed
- ZK Session Cleaner
- org.zkoss.zk.ui.http.HttpSessionListener
-
-
-
+
+
+
+ Used to cleanup when a session is destroyed
+ ZK Session Cleaner
+ org.zkoss.zk.ui.http.HttpSessionListener
+
-
-
- org.springframework.web.context.ContextLoaderListener
-
+
-
- org.springframework.web.context.request.RequestContextListener
-
-
-
-
-
- ZK loader for ZUML pages
- zkLoader
- org.zkoss.zk.ui.http.DHtmlLayoutServlet
-
-
- update-uri
- /zkau
-
- 1
-
-
- zkLoader
- *.zul
-
-
- zkLoader
- *.zhtml
-
-
- The asynchronous update engine for ZK
- auEngine
- org.zkoss.zk.au.http.DHtmlUpdateServlet
-
-
- auEngine
- /zkau/*
-
-
+
+ org.springframework.web.context.ContextLoaderListener
+
+
+
+
+ org.springframework.web.context.request.RequestContextListener
+
+
+
+
+
+ ZK loader for ZUML pages
+ zkLoader
+ org.zkoss.zk.ui.http.DHtmlLayoutServlet
+
+
+ update-uri
+ /zkau
+
+ 1
+
+
+ zkLoader
+ *.zul
+
+
+ zkLoader
+ *.zhtml
+
+
+ The asynchronous update engine for ZK
+ auEngine
+ org.zkoss.zk.au.http.DHtmlUpdateServlet
+
+
+ auEngine
+ /zkau/*
+
+
+
+
+
+
+
+ /planner/main.zul
+
+
+
+
+ java.lang.Throwable
+ /common/error.zul
+
-
- /planner/main.zul
-
diff --git a/navalplanner-webapp/src/main/webapp/WEB-INF/zk.xml b/navalplanner-webapp/src/main/webapp/WEB-INF/zk.xml
index 7bf738822..d0ed26c16 100644
--- a/navalplanner-webapp/src/main/webapp/WEB-INF/zk.xml
+++ b/navalplanner-webapp/src/main/webapp/WEB-INF/zk.xml
@@ -1,5 +1,11 @@
-
-
-
+
+
+
+
+ java.lang.Throwable
+
+ /common/event_error.zul
+
+
diff --git a/navalplanner-webapp/src/main/webapp/common/error.jsp b/navalplanner-webapp/src/main/webapp/common/error.jsp
new file mode 100644
index 000000000..a3ba92060
--- /dev/null
+++ b/navalplanner-webapp/src/main/webapp/common/error.jsp
@@ -0,0 +1,12 @@
+<%@ page language="java" contentType="text/html; charset=UTF-8"
+ pageEncoding="UTF-8"%>
+
+
+
+
+Insert title here
+
+
+
+
+
\ No newline at end of file
diff --git a/navalplanner-webapp/src/main/webapp/common/error.zul b/navalplanner-webapp/src/main/webapp/common/error.zul
new file mode 100644
index 000000000..f2dec80ff
--- /dev/null
+++ b/navalplanner-webapp/src/main/webapp/common/error.zul
@@ -0,0 +1,14 @@
+
+
+ Erro ${requestScope['javax.servlet.error.status_code']}
+
+
+ Prodúxose un erro na execución:
+ "${requestScope['javax.servlet.error.message']}". O erro
+ gardouse e procurarase arreglalo no menor tempo posible.
+
+
+
+
+
+
\ No newline at end of file
diff --git a/navalplanner-webapp/src/main/webapp/common/event_error.zul b/navalplanner-webapp/src/main/webapp/common/event_error.zul
new file mode 100644
index 000000000..2e9b46a5f
--- /dev/null
+++ b/navalplanner-webapp/src/main/webapp/common/event_error.zul
@@ -0,0 +1,14 @@
+
+
+ Prodúxose un erro na execución:
+ "${requestScope['javax.servlet.error.message']}". O erro
+ gardouse e procurarase arreglalo no menor tempo posible.
+
+
+
+
+
+
+