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; + } + }