Acquérir le préfixe complet pour un composant clientId dans les conteneurs de nommage avec JSF 2.0
Je me suis mise à jour d'un composant via AJAX dans JSF:
<h:form>
<h:outputLink>Click me
<f:ajax event="click" render=":messages" />
</h:outputLink>
</h:form>
<h:messages id="messages" globalOnly="true" />
Comme le <h:messages />
réside à l'extérieur <h:form />
je préfixe de l'ID du côlon (:
). Les travaux de cette.
Cependant, si j'ai mis ce même code dans un composant et de l'inclure dans ma page, le code ne fonctionne pas. La raison en est que :messages
déclaration fait référence à la racine de la hiérarchie des composants, tandis que le <h:messages />
composant que je veux mettre à jour se trouve sous mon composant personnalisé, qui se trouve dans la page (si l'emplacement est de style :myComponent:messages
.
À l'intérieur de mon composant, comment puis-je obtenir le préfixe correct à la <h:messages />
composant? Je sais que je peux attribuer manuellement l'ID de mon composant, et l'utiliser pour le préfixe de référence (comme :#{cc.attrs.id}:messages
). Cependant, je ne sais pas à quel niveau de la hiérarchie des composants de ce composant se trouve, de sorte que le préfixe requis pourrait même être quelque chose comme :foo:bar:x:y:messages
.
source d'informationauteur Tuukka Mustonen
Vous devez vous connecter pour publier un commentaire.
Semble que vous pouvez accéder à la préfixe par l'Expression Language (EL) les objets implicites (
cc
etcomponent
):cc.clientId
retourne actuel composite composant le préfixe decomponent.clientId
renvoie le préfixe pour n'importe quel composant en cours.Par exemple, dans une page, appeler un composant via
À l'intérieur de ce composant, on peut aller chercher le client Id comme ceci:
Les éléments suivants doivent imprimer:
J'ai eu le pointeur de blog JSF: travail avec le composant identifiants (id/clientId). Il déclare que c'est une nouvelle fonctionnalité pour JSF 2.0. Avant que l'on avait pour récupérer l'ID par programmation à partir d'un backing bean.
@Tuukka Mustonen, je vous remercie pour votre réponse.
Et si nous avons besoin d'accéder à certains une autre id de la même "place" nous pourrions utiliser:
Fonction JavaScript:
Sortie sur la fenêtre de dialogue:
1) myForm:aaa
2) null
3) myForm:ccc
4) myForm:aaa
Remarque: le 1er et 3ème ont le même résultat.