Persistencia de mensajes JSF

Tengo un bean viewScoped que tiene alguna validación de lógica de negocios. Muestro los errores resultantes de esta validación a la página usando

FacesContext.getCurrentInstance().addMessage(null, new FacesMessage(severity, result, null));

El problema es:

el usuario envía un formulario inválidoformulario vuelto a mostrar, los mensajes no se muestran al usuario debido al uso de PRG

Resolví esto usando la siguiente línea de código:

FacesContext.getCurrentInstance().getExternalContext().getFlash().setKeepMessages(true);

Ahora el problema es que los mensajes de validación de la lógica de negocios persisten demasiado tiempo:

el usuario envía un formulario inválidoFormulario vuelto a mostrar con mensajes de error.usuario corrige y envía formulario válidoEl formulario se volvió a mostrar con un mensaje de "éxito", pero también se mostraron mensajes de error anteriores.

¿Cómo puedo arreglar esto?

Respuestas a la pregunta(1)

Su respuesta a la pregunta