Comment supprimer FacesMessages du FacesContext?

Dans mon écran, j'ai une liste déroulante(select case), sur la sélection de l'une des options du menu déroulant , j'ai l'affichage de l'un ou de plusieurs zones de texte à côté de la boîte de sélection à l'aide de javascript/css display:none et display:block. Tous ces contrôles de saisie sont dans le même jsf forme. Chacun des contrôles de saisie ont leur propre programme de validation. Le problème est supposons que l'utilisateur sélectionne option1 à partir de la sélection de la boîte et n'a pas valeur d'entrée ou les entrées d'une valeur erronée pour inputbox1, je ajouter un FacesMessage dans le Validateur et est illustré de façon appropriée et supposons que l'utilisateur sélectionne le option2 la deuxième fois et des intrants, la valeur incorrecte pour le inputbox2 puis un autre FacesMessage est ajouté dans le programme de validation. Mais Maintenant à la fois les Messages sont affichés - les moyens - le message pour inputbox1 et inputbox2 - ce qui est faux Mon hypothèse est que , ce qui se passe parce qu'ils existent dans la même forme et de leurs instances ne sont pas détruits mais dans le FacesContext et dans le UIView. J'ai décidé de supprimer les messages de cette façon

Iterator<FacesMessage> msgIterator = FacesContext.getCurrentInstance().getMessages();
    while(msgIterator.hasNext())
    {
        msgIterator.next();
        msgIterator.remove();
    }

Mais cela donne parfois de java.util.NoSuchElementException org.apache.myfaces.shared_impl.renderkit.html.HtmlMessagesRendererBase$MessagesIterator.prochaine

Donc 2 questions :

1) Quel est le problème de la suppression de la FacesMessages de cette façon? Je suis à l'aide de myfaces-api-1.2.3.jar et myfaces-impl-1.2.3.jar

2) Est-il une meilleure approche pour gérer mon scénario? Je veux seulement montrer corporation de messages à chaque fois qu'un jsf demande est traitée

Grâce

source d'informationauteur gekrish