2010-05-31 4 views
2

Je crée un composant facelet que j'ai voulu inclure plusieurs fois dans une seule page.Facelets dupliquer id

J'ai besoin de définir un tag a4j: outputPanel dans mon composant et lui donner un identifiant, de sorte qu'il soit possible de réécrire ce outputPanel via ajax. Mais les facelets ne semblent pas gérer cette situation lorsque "duplicateId Exception" est lancé. Je comprends partiellement pourquoi cela arrive. J'ai inclus plusieurs composants dans une seule page, mais chaque composant contient outputPanel avec le même id codé en dur.

  1. Peut-on ne pas coder en dur?
  2. Existe-t-il une balise facelets qui crée une limite dans laquelle vous n'avez pas à vous soucier des conflits entre les ID des objets à l'intérieur de cette limite et les ID des objets à l'extérieur de la limite?

Répondre

0

Ceci est un moyen d'éviter les ids codés en dur en faisant passer l'ID dans le composant tel que:

ac: testComponent id = "someId"

Dans le composant Facelet alors:

h: outputText id = "# {id} _outputText"

Le problème est que trinidad ne prend pas en charge ce langage EL pour l'attribut partialTriggers. Si quelqu'un sait comment faire cela, s'il vous plaît poster sur ce site une explication.

+2

Un problème que je vois avec votre Par exemple, vous avez un trait de soulignement au milieu de votre identifiant qui mènera à une exception IllegalArgumentException – Adam

+0

, cela ne devrait pas être un problème, mais regardez ici pour ma question sur le problème pour plus de détails: http://stackoverflow.com/questions/5972433/quoi-sont-les-règles-pour-un-jsf-id/5972462 # 5972462 – Adam

1

La création partielle d'une sous-vue entraîne un problème avec partialTriggers. < ui: composante > < f: id = sous-vue "# {id}" > .... code de composant </f: > < sous-vue/ui: composante >