JSF et l'erreur Duplicate component ID

Tagged:

On peut devenir fou avec cette erreur j'en suis certain ... Mais j'ai trouvé un certain nombre de méthodes pour m'en sortir !

  • Premièrement et basiquement, donnez des id explicite a tous les blocs de composants ... Ca aide a identifier la hiérarchie et de savoir d'ou vien le composant qui pose problème ...
  • Deuxièmement pensez a donner des id a tous vos composants autant que faire se peut ... Ne vous souciez pas des dataTable et compagnie, il gère l'unicité de l'id en y ajoutant un numéro de ligne, donc n'hésitez pas ...
  • Troisièmement, et la c'est dans les cas plus velus ... Si vous utilisez des subviews, que ces subviews utilisent des binding, faites tout votre possible pour que les différentes pages n'utilisent pas la même instance du binding ... Ca vaut également pour les autres instances utilisées par la subview si vous rencontrez encore l'erreur ...

Bref je suis assez content d'en être sortit ...

Si quelqu'un sait comment faire un dump de l'arbre des composants comme erikgd le fait (descendre un peu plus bas) ... ça m'intéresse et j'ai pas envie de chercher :D

Inutile : Remarquez le mec (MandarKul) qui est super balaise et qui comprend et résoud le problème en une seule phrase : "I think you have two components with the same id : "_id16" on the same JSP page." ... j'ai bien aimé

Comments

Bonjour,
Merci pour ces infos qui m'ont été utile.
As tu + d'infos concernant les subviews et le problème de binding, j'ai recherché des infos sur ce problème, sans succès.

Juste pour info, afficher l'arbre des composants, je crois qu'il faut activer
facelets.DEVELOPMENT à true dans ton web.xml
Lors d'une exception remontée dans tes vues,tu auras alors accès à ton arbre de composant.
En tout temps, tu peux également avoir cet info via le tag:
ui:debug (facelets)