Bonjour à tous,

J'ai un problème de DuplicateID en JSF à cause du code suivant :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
<c:choose>
    <c:when test="#{monBean.monAttribut}">
        // jsf ...
    </c:when>
    <c:when test="#{!monBean.monAttribut}">
        // jsf ...
    </c:when>
</c:choose/>
Dans un cas je passe dans le premier <c:when> et dans l'autre cas dans le deuxième, en fonction de la valeur de l'attribut "monAttribut".

Dans chacun de ces <c:when>, j'ai des composants JSF qui ont le même ID. Je ne penserais pas que cela poserais problème étant donné que j'affiche l'un OU l'autre.

Pourtant j'ai l'erreur suivante :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
 
ATTENTION: executePhase(RENDER_RESPONSE 6,com.sun.faces.context.FacesContextImpl@1248513) threw exception
java.lang.IllegalStateException: Component ID form1:mess has already been found in the view.  See below for details.
Cela ne se produit pas au premier affichage de la page mais une fois que l'un des <c:when> a déjà été affiché et qu'une action entraîne l'affichage de l'autre.

En fait il s'agit d'un composant <h:messages> que j'affiche de manière différente en fonction de l'action que l'utilisateur vient d'effectuer.

Y a-t-il un moyen de pallier à cette erreur ?

Merci d'avance