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