Mejora en la gestión de excepciones en la página de error.

This commit is contained in:
Marcos Garcia Nuñez
2020-01-01 23:47:01 +01:00
parent 75ed5e2635
commit 4079c50f8a
2 changed files with 32 additions and 9 deletions

View File

@@ -11,7 +11,7 @@ import javax.faces.context.FacesContext;
import javax.inject.Named; import javax.inject.Named;
import javax.servlet.http.HttpServletRequest; 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 static final long serialVersionUID = 1L;
private String errorType; private String errorType;
private String errorMessage;
private String requestURI; private String requestURI;
private boolean renderBack; private boolean renderBack;
@@ -46,7 +47,21 @@ public class errorMBean extends ManagedBeanBase implements Serializable {
setRenderBack(true); 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. // Si no hay error volvemos al home.
if (this.errorType.equals("") == true) if (this.errorType.equals("") == true)
@@ -62,12 +77,12 @@ public class errorMBean extends ManagedBeanBase implements Serializable {
case "java.net.ConnectException": case "java.net.ConnectException":
case "javax.persistence.PersistenceException": case "javax.persistence.PersistenceException":
this.errorType = "sql"; 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; break;
default: default:
this.errorType = "runtime"; 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);
} }
} }
} }
@@ -115,4 +130,12 @@ public class errorMBean extends ManagedBeanBase implements Serializable {
this.renderBack = renderBack; this.renderBack = renderBack;
} }
public String getErrorMessage() {
return errorMessage;
}
public void setErrorMessage(String errorMessage) {
this.errorMessage = errorMessage;
}
} }