tutorial spring_security_login mvc j_spring_security_check form example custom error-handling xpages

error-handling - spring_security_login - spring security custom login endpoint



Obtener mensajes de error (2)

Estamos utilizando el siguiente código para agregar nuevos mensajes de error al validar el documento:

function addFacesMessage( message, component ){ try { if( typeof component === ''string'' ){ component = getComponent( component ); } var clientId = null; if( component ){ clientId = component.getClientId( facesContext ); } facesContext.addMessage( clientId, new javax.faces.application.FacesMessage( message ) ); } catch(e){ globalScriptErrors.add(e); requestScope.put("scriptErrors", globalScriptErrors); } }

Llamamos a esta función en cada rutina de validación, si se produce un error:

facesContext.addMessage("", new javax.faces.application.FacesMessage("errormessage" );

En nuestra página XPage, tenemos un cuadro de mensaje de error para mostrar todos los errores que ocurrieron para la página actual:

<xp:messages id="messages2" styleClass="lotusMessage lotusWarning"></xp:messages>

Ahora, los mensajes se muestran en el cuadro de mensaje de error, pero ¿cómo podemos verificar si hay errores para esta página? Queremos utilizar esta información, por ejemplo, para una ventana emergente, que solo debe mostrarse, si no se muestran errores en el cuadro de mensaje de error. ¿Pero cómo obtenemos esta información?


Debería funcionar con:

if (facesContext.getMessages().hasNext())

Aquí un ejemplo de trabajo:

<xp:text escape="true" id="computedField1"> <xp:this.value><![CDATA[#{javascript:if (facesContext.getMessages().hasNext()) return "there is a error message"; else return "no message";}]]></xp:this.value> </xp:text> <xp:button value="no title" id="button1"> <xp:eventHandler event="onclick" submit="true" refreshMode="complete"> <xp:this.action><![CDATA[#{javascript: var message = "test"; var component = "none" try { if( typeof component === ''string'' ){ component = getComponent( component ); } var clientId = null; if( component ){ clientId = component.getClientId( facesContext ); } facesContext.addMessage( clientId, new javax.faces.application.FacesMessage( message ) ); } catch(e){ globalScriptErrors.add(e); requestScope.put("scriptErrors", globalScriptErrors); } }]]></xp:this.action> </xp:eventHandler>


Use lo siguiente para verificar mensajes:

facesContext.getMessages().hasNext()

Volverá a ser verdadero si existen mensajes, y falso si no existen mensajes.

Puede usar esto para controlar la representación de, por ejemplo, un div como este:

<xp:div rendered="#{javascript:facesContext.getMessages().hasNext()}"> </xp:div>