Persistência de mensagens JSF

Eu tenho um bean viewScoped que possui alguma validação da lógica de negócios. Eu mostro os erros resultantes dessa validação na página usando

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

O problema é:

usuário envia um formulário inválidoformulário exibido novamente, as mensagens não são exibidas ao usuário devido ao uso do PRG

Eu resolvi isso usando a seguinte linha de código:

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

Agora, o problema é que as mensagens de validação da lógica de negócios persistem por muito tempo:

usuário envia um formulário inválidoformulário exibido novamente com mensagens de erroo usuário corrige e envia um formulário válidoformulário exibido novamente com a mensagem "sucesso", mas também as mensagens de erro anteriores também são exibidas.

Como posso consertar isso?

questionAnswers(1)

yourAnswerToTheQuestion