diff --git a/1.sources/MyHealth/docroot/WEB-INF/web.xml b/1.sources/MyHealth/docroot/WEB-INF/web.xml
index a8e0cc8..39d55e9 100644
--- a/1.sources/MyHealth/docroot/WEB-INF/web.xml
+++ b/1.sources/MyHealth/docroot/WEB-INF/web.xml
@@ -38,7 +38,7 @@
primefaces.THEME
#{sessionPreferences.currentTheme}
-
+
Faces Servlet
diff --git a/1.sources/MyHealth/src/managedbean/common/errorMBean.java b/1.sources/MyHealth/src/managedbean/common/errorMBean.java
index 38a8dec..c116df8 100644
--- a/1.sources/MyHealth/src/managedbean/common/errorMBean.java
+++ b/1.sources/MyHealth/src/managedbean/common/errorMBean.java
@@ -11,7 +11,7 @@ import javax.faces.context.FacesContext;
import javax.inject.Named;
import javax.servlet.http.HttpServletRequest;
-import TO.VisitTO;
+import common.Utils;
/***
*
@@ -24,6 +24,7 @@ public class errorMBean extends ManagedBeanBase implements Serializable {
private static final long serialVersionUID = 1L;
private String errorType;
+ private String errorMessage;
private String requestURI;
private boolean renderBack;
@@ -37,16 +38,30 @@ public class errorMBean extends ManagedBeanBase implements Serializable {
Map requestParams = fc.getExternalContext().getRequestParameterMap();
- this.errorType = this.getRequestParameter(requestParams,"type");
+ this.errorType = this.getRequestParameter(requestParams, "type");
if (this.errorType.equals("") == true) {
this.requestURI = this.getRequestAttribute(req, "javax.servlet.error.request_uri");
-
+
if (requestURI.equals("") == true)
this.requestURI = req.getContextPath().concat("/home.xhtml");
-
+
setRenderBack(true);
- this.errorType = this.getRequestAttribute(req, "javax.servlet.error.exception_type").replaceFirst("class ", "");
+ Throwable rootCause = null;
+ Object obj = req.getAttribute("javax.servlet.error.exception");
+ if (obj != null) {
+ Exception se = Exception.class.cast(obj);
+
+ rootCause = Utils.getExceptionRootCause(se);
+
+ if (rootCause != null) {
+ this.errorType = rootCause.getClass().getName();
+ this.errorMessage = rootCause.getLocalizedMessage();
+ } else {
+ this.errorType = se.getClass().getName();
+ this.errorMessage = se.getCause().getLocalizedMessage();
+ }
+ }
// Si no hay error volvemos al home.
if (this.errorType.equals("") == true)
@@ -62,12 +77,12 @@ public class errorMBean extends ManagedBeanBase implements Serializable {
case "java.net.ConnectException":
case "javax.persistence.PersistenceException":
this.errorType = "sql";
- this.addFacesMessage(FacesMessage.SEVERITY_ERROR, "Error interno del servidor", this.getRequestAttribute(req, "javax.servlet.error.message"));
+ this.addFacesMessage(FacesMessage.SEVERITY_ERROR, "Error en el acceso a la base de datos", this.errorMessage);
break;
default:
this.errorType = "runtime";
- this.addFacesMessage(FacesMessage.SEVERITY_ERROR, "Error interno del servidor", this.getRequestAttribute(req, "javax.servlet.error.message"));
+ this.addFacesMessage(FacesMessage.SEVERITY_ERROR, "Error interno del servidor", this.errorMessage);
}
}
}
@@ -81,7 +96,7 @@ public class errorMBean extends ManagedBeanBase implements Serializable {
else
return "";
}
-
+
private String getRequestParameter(Map pars, String paramName) {
Object par = pars.get(paramName);
@@ -115,4 +130,12 @@ public class errorMBean extends ManagedBeanBase implements Serializable {
this.renderBack = renderBack;
}
+ public String getErrorMessage() {
+ return errorMessage;
+ }
+
+ public void setErrorMessage(String errorMessage) {
+ this.errorMessage = errorMessage;
+ }
+
}