Mejora en la gestión de excepciones en la página de error.
This commit is contained in:
@@ -38,7 +38,7 @@
|
||||
<param-name>primefaces.THEME</param-name>
|
||||
<param-value>#{sessionPreferences.currentTheme}</param-value>
|
||||
</context-param>
|
||||
|
||||
|
||||
<!-- JSF mapping -->
|
||||
<servlet>
|
||||
<servlet-name>Faces Servlet</servlet-name>
|
||||
|
||||
@@ -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<String, String> 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<String, String> 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;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user