Implementación de mensajes de error que se muestran en la pagina de

error.
El mensaje de error se envía a través de la sesión.
This commit is contained in:
Marcos Garcia Nuñez
2019-12-15 14:10:09 +01:00
parent b5a41958a2
commit 1bfd7317e6
5 changed files with 60 additions and 14 deletions

View File

@@ -10,22 +10,29 @@
<div class="ui-g ui-fluid">
<div class="ui-g-2 ui-md-2" />
<div class="ui-g-8 ui-md-8">
<p:panel id="ErrorPanel" header="Se ha producido un error inesperado">
<p:panel id="ErrorPanel">
<f:facet name="header">
<p:outputLabel value="Se ha producido un error de autorización" rendered="#{param.type == 'auth'}" />
<p:outputLabel value="Se ha producido un error desconocido" rendered="#{param.type == null}" />
</f:facet>
<div class="ui-g ui-fluid">
<div class="ui-g-12">La acción que estaba realizando a causado un error inesperado en el sistema. A continuación podrá ver un descripción detallada del error para que
pueda comunicarlo al equipo de soporte.</div>
<div class="ui-g-12" style="font-weight: bold;">Descripción del error</div>
<div class="ui-g-12" style="font-weight: bold;">
<!-- <p:outputLabel value="No está autorizado a acceder a la página solicitada. Por favor, utilice el menú principal de la aplicación." rendered="#{param.type == 'auth'}" /> -->
<!-- <p:outputLabel value="Se ha producido un error desconocido. Si vuelve a repetirse, por favor, contacte con el equipo de soporte." rendered="#{param.type == null}" /> -->
</div>
<div class="ui-g-12">
<h:messages fatalClass="ErrorMessage" showDetail="true" showSummary="true" globalOnly="true" />
<p:messages id="errorMessage" showDetail="true" closable="false" autoupdate="true" showSummary="true" showIcon="true" />
</div>
<div class="ui-g-5" />
<div class="ui-g-2">
<div class="ui-g-4" />
<div class="ui-g-4">
<p:button value="Ir a la página principal" outcome="home" icon="pi pi-home" />
</div>
<div class="ui-g-5" />
<div class="ui-g-4" />
</div>
</p:panel>
</div>

View File

@@ -6,6 +6,7 @@ import java.util.ArrayList;
import java.util.Dictionary;
import java.util.List;
import javax.faces.application.FacesMessage;
import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
@@ -129,7 +130,8 @@ public class AuthorizationFilter implements Filter {
chain.doFilter(request, response);
return;
} else {
resp.sendRedirect(req.getContextPath() + "/error.xhtml");
SessionUtils.addMessage(ses, FacesMessage.SEVERITY_ERROR, "No está autorizado a acceder a la página solicitada. Por favor, utilice el menú principal de la aplicación.", String.format("Se ha producido una expción de autorización, su usuario no está autorizado a acceder a la página: (%s).", reqURI));
resp.sendRedirect(req.getContextPath() + "/error.xhtml?type=auth");
return;
}

View File

@@ -105,7 +105,15 @@ public class ManagedBeanBase {
}
protected void addFacesMessage(FacesContext context, FacesMessage.Severity severity, String summary, String detail) {
context.addMessage(null, new FacesMessage(severity, summary, detail));
this.addFacesMessage(context, new FacesMessage(severity, summary, detail));
}
protected void addFacesMessage(FacesMessage facesMsg) {
this.addFacesMessage(FacesContext.getCurrentInstance(), facesMsg);
}
protected void addFacesMessage(FacesContext context, FacesMessage facesMsg) {
context.addMessage(null, facesMsg);
}
protected void manageException(Exception ex) {

View File

@@ -1,6 +1,7 @@
package managedbean.common;
import javax.faces.application.FacesMessage;
import javax.faces.context.FacesContext;
import javax.servlet.ServletRequest;
import javax.servlet.http.HttpServletRequest;
@@ -14,6 +15,7 @@ public class SessionUtils {
public static final String SESSION_VAR_USERID = "userId";
public static final String SESSION_VAR_USERTYPE = "userType";
public static final String SESSION_VAR_USER = "loggedOnUser";
public static final String SESSION_VAR_MESSAGE = "facesMessage";
public static HttpSession getSession() {
FacesContext ctx = FacesContext.getCurrentInstance();
@@ -47,7 +49,7 @@ public class SessionUtils {
public static boolean isLogedIn() {
return isLogedIn(getSession());
}
public static boolean isLogedIn(HttpSession session) {
if (session != null && session.getAttribute(SessionUtils.SESSION_VAR_USERID) != null)
return true;
@@ -73,15 +75,15 @@ public class SessionUtils {
public static UserType getUserType() {
return getUserType(getSession());
}
}
public static UserType getUserType(HttpSession session) {
if (session != null && session.getAttribute(SessionUtils.SESSION_VAR_USERTYPE) != null)
return UserType.class.cast(session.getAttribute(SessionUtils.SESSION_VAR_USERTYPE));
else
return null;
}
}
public static LoggedUserTO getloggedOnUser() {
HttpSession session = getSession();
if (session != null && session.getAttribute(SessionUtils.SESSION_VAR_USER) != null)
@@ -89,4 +91,24 @@ public class SessionUtils {
else
return null;
}
public static FacesMessage getMessage() {
HttpSession session = getSession();
if (session != null && session.getAttribute(SessionUtils.SESSION_VAR_MESSAGE) != null) {
FacesMessage msg = FacesMessage.class.cast(session.getAttribute(SessionUtils.SESSION_VAR_MESSAGE));
session.removeAttribute(SessionUtils.SESSION_VAR_MESSAGE);
return msg;
} else
return null;
}
public static void addMessage(FacesMessage.Severity severity, String summary, String detail) {
addMessage(getSession(), severity, summary, detail);
}
public static void addMessage(HttpSession session, FacesMessage.Severity severity, String summary, String detail) {
if (session != null)
session.setAttribute(SessionUtils.SESSION_VAR_MESSAGE, new FacesMessage(severity, summary, detail));
}
}

View File

@@ -5,6 +5,7 @@ import java.util.List;
import javax.annotation.PostConstruct;
import javax.enterprise.context.RequestScoped;
import javax.faces.application.FacesMessage;
import javax.inject.Named;
import common.UserType;
@@ -16,7 +17,7 @@ import common.UserType;
*/
@Named("home")
@RequestScoped
public class homeMBean implements Serializable {
public class homeMBean extends ManagedBeanBase implements Serializable {
private static final long serialVersionUID = 1L;
private boolean isLogedIn;
@@ -31,6 +32,12 @@ public class homeMBean implements Serializable {
userName = SessionUtils.getUserName();
userId = SessionUtils.getUserId();
userType = SessionUtils.getUserType();
FacesMessage message = SessionUtils.getMessage();
if (message != null) {
this.addFacesMessage(message);
}
}
public List<Theme> getThemes() {