Comment puis-je régler l'id de composant/balise à l'intérieur de l'interface utilisateur:répéter
Je suis en train d'affecter une id
à un composant à l'intérieur d'un <ui:repeat>
comme ça:
<ui:repeat value="#{bean.columns}" var="column">
<h:panelGroup layout="block" id="column_#{column.id}"
styleClass="#{column.id} dashboard_column">
Le truc, c'est que #{column.id}
valeur est placé à l'intérieur de la styleClass
valeur, mais le son n'étant pas défini à l'intérieur de la id
attribut. Tout ce qui est en train d'être mis à l'intérieur de la id
attribut est automatiquement généré id
par la JSF + mon codé en dur la valeur column_
.
Si je supprime le codés en dur column_
j'obtiens une exception:
java.lang.IllegalArgumentException: composant identificateur ne doit pas être une Chaîne de longueur nulle
au
Des Idées?
Vous devez vous connecter pour publier un commentaire.
Ce n'est pas possible avec un rendu en temps balise de type
<ui:repeat>
. Le<ui:repeat>
sera toutefois par lui-même déjà s'assurer de l'unicité de l'généré ID client en les préfixant avec l'index de ligne. Il suffit donc de retirer le EL le cadre de l'attribut ID de l'élément.Avec une vue moment de la construction de la balise comme
<c:forEach>
(qui va générer plusieurs<h:panelGroup>
composants au lieu d'un seul qui est rendu à plusieurs reprises), il est possible de spécifier une dynamique ID comme ça.(vous ne doit être bien conscient de la façon dont JSTL travaille dans Facelets)
Une alternative est d'utiliser un statique
<div>
élément au lieu d'un JSF<h:panelGroup layout="block">
composant.Voir aussi:
JSF préfixes automatiquement un identifiant. Si vous écrivez tout simplement id="colonne", le code HTML généré contiendra de tels identifiants:
myForm:0:colonne
myForm:1:colonne
myForm:2:colonne
et ainsi de suite.
Quand même: Ne jamais utiliser de balises JSTL (comme c:foreach et c:si) dans JSF modèles. Ils provoquent un comportement aléatoire, très difficile à déboguer. Et s'ils travaillent, le ralentir l'application.
Utilisation de l'interface utilisateur:répétez l'opération pour les boucles, et l'interface utilisateur:fragment de blocs conditionnels. Notez qu'il n'y a pas de remplacement pour c:jeu, une telle construction n'existe plus dans JSF 2.