Mejora en la gestión de excepciones en la página de error.
This commit is contained in:
@@ -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;
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user