Bonjour à tous,

Je développe actuellement une application avec JSF 2 et Primefaces 3.2.

Dans l'une de mes pages, j'ai ce morceau de code :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
 
<ui:repeat value="#{list}" var="objet" varStatus="status">
    <p:dataTable id="data#{status.id}" ...>
        ...
        <p:rowExpansion>
            ...
        </p:rowExpansion>
    </p:dataTable>
</ui:repeat>
Sur ma page j'ai donc par exemple plusieurs tableaux de plusieurs lignes générés.

Lorsqu'un seul tableau est généré, je n'ai aucun soucis particulier, les <p:rowExpansion> marchent sans soucis. Mais lorsque j'ai par exemple 2 tableaux, c'est la catastrophe. les <p:rowExpansion> du second tableau sont en fait un <p:rowExpansion> du premier tableau...

Je pense que c'est un problème d'identifiant. En effet, les identifiants qui sont générés automatiquement par PrimeFaces sont les mêmes pour mes 2 tableaux.

J'aimerais donc pouvoir géré dynamiquement les identifiants de mes dataTables, mais je n'y arrive absolument pas.

Par exemple avec le code suivant tous les dataTables ont l'id "data" :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
<ui:repeat value="#{list}" var="objet" varStatus="status">
    <p:dataTable id="data#{status.index}" ...>
    </p:dataTable>
</ui:repeat>
Avec le code suivant, j'obtiens une erreur :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
<ui:repeat value="#{list}" var="objet" varStatus="status">
    <p:dataTable id="#{status.index}" ...>
    </p:dataTable>
</ui:repeat>
Voici l'erreur : java.lang.IllegalArgumentException: Empty id attribute is not allowed

Comment peut-on générer dynamiquement un identifiant ?

Merci d'avance pour votre aide !