From aeb1d300a414cb645e72f95e66a80b17a2b60cbd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marcos=20Garcia=20Nu=C3=B1ez?= Date: Fri, 20 Dec 2019 00:04:41 +0100 Subject: [PATCH] Mejora en el control de excepciones. --- .../managedbean/common/ManagedBeanBase.java | 29 ++++++++++++++++--- 1 file changed, 25 insertions(+), 4 deletions(-) diff --git a/1.sources/MyHealth/src/managedbean/common/ManagedBeanBase.java b/1.sources/MyHealth/src/managedbean/common/ManagedBeanBase.java index 74ac0dd..f36cc00 100644 --- a/1.sources/MyHealth/src/managedbean/common/ManagedBeanBase.java +++ b/1.sources/MyHealth/src/managedbean/common/ManagedBeanBase.java @@ -1,9 +1,12 @@ package managedbean.common; +import java.io.IOException; import java.util.Properties; import javax.ejb.EJB; import javax.faces.application.FacesMessage; +import javax.faces.application.ViewExpiredException; +import javax.faces.context.ExternalContext; import javax.faces.context.FacesContext; import javax.naming.Context; import javax.naming.InitialContext; @@ -103,7 +106,7 @@ public class ManagedBeanBase { protected void addFacesMessage(FacesMessage.Severity severity, String summary, String detail) { this.addFacesMessage(FacesContext.getCurrentInstance(), null, severity, summary, detail); } - + protected void addFacesMessage(String clientId, FacesMessage.Severity severity, String summary, String detail) { this.addFacesMessage(FacesContext.getCurrentInstance(), clientId, severity, summary, detail); } @@ -111,16 +114,34 @@ public class ManagedBeanBase { protected void addFacesMessage(FacesContext context, String clientId, FacesMessage.Severity severity, String summary, String detail) { this.addFacesMessage(context, clientId, new FacesMessage(severity, summary, detail)); } - + protected void addFacesMessage(FacesMessage facesMsg, String clientId) { this.addFacesMessage(FacesContext.getCurrentInstance(), clientId, facesMsg); } - + protected void addFacesMessage(FacesContext context, String clientId, FacesMessage facesMsg) { context.addMessage(clientId, facesMsg); } protected void manageException(Exception ex) { - this.addFacesMessage(FacesMessage.SEVERITY_ERROR, "Se ha producido un error inesperado", "Descripción del error: " + ex.getLocalizedMessage()); + String strType = ""; + + if (ex.getClass().equals(ViewExpiredException.class)) { + // Sessión expired + strType = "expired"; + this.addFacesMessage(FacesMessage.SEVERITY_ERROR, "Su sesión ha caducado", "Su sesión ha caducado, vuelva a logarse en el sistema."); + } else { + this.addFacesMessage(FacesMessage.SEVERITY_ERROR, "Se ha producido un error inesperado", "Descripción del error: " + ex.getLocalizedMessage()); + } + + + try { + ExternalContext ctx = FacesContext.getCurrentInstance().getExternalContext(); + + ctx.redirect(ctx.getApplicationContextPath() + "/error.xhtml?type=" + strType); + } catch (IOException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } } }