Para llevar a cabo esta verificación, se puede revisar los mensajes de error del contexto faces y dependiendo de los resultados obtenidos se pueden dar los siguientes casos:
- Si no hay mensajes de error en el contexto faces, se asume la información se ha enviado y la operación asociada se ha ejecutado satisfactoriamente.
- En caso contrario, se asume un error de validación, o de alguna regla de negocio que no permite ejecutar la operación requerida.
FacesContext fc = FacesContext.getCurrentInstance();
boolean tieneMensajesError = fc.getMessages(null).hasNext();
if (tieneMensajesError) {
// Realizar alguna acción si hay mensajes de error
} else {
// Realizar alguna acción si no hay mensajes de error
}
¿Cómo hacer esta verificación en el cliente? JavaScript es el mecanísmo más común, usando la API de Richfaces la implementación quedaría de la siguiente forma:
<rich:modalpanel id="ejericioDlg">
<a4j:commandButton id="btnGuardar" action="#{algunBean.guardar}" value="Guardar" oncomplete="if (#{facesContext.maximumSeverity==null}) #{rich:component('ejercicioDlg')}.hide();"/>
<a4j:commandButton id="btnCancelar" value="Cancelar" immediate="true">
<rich:componentControl for="ejercicioDlg" operation="hide" event="oncomplete" />
</a4j:commandButton>
</rich:modalpanel>
Con lo anterior logramos que el cuadro de diálogo solo se cierre en caso de no presentar errores de validación, que es un comportamiento comunmente deseado.
No hay comentarios:
Publicar un comentario