La récupération d'autre du composant d'identification de client en JSF 2.0
Ne JSF 2.0 intègre une méthode pour trouver l'ID du client d'un autre composant? Il y a environ un millier d'ID du client liés à des questions sur soi et il y a beaucoup de hackish méthodes pour faire cela, mais je me demandais si JSF 2.0 a introduit une méthode plus simple que je ne sais pas.
#{component.clientId}
évalue à une composante donnée du client ID, mais je veux faire référence à une autre composante de l'IDENTITÉ.
Cette blog post mentionne component.clientId
, et il dit aussi #{someComponent.clientId}
œuvres, mais de ce que je peux dire il ne le fait pas. Je crois qu'il a écrit avant que l'une des implémentations de référence de JSF 2.0, de sorte qu'il a été tout simplement passer par la JSR et peut-être que la fonctionnalité ont changé. Je ne suis pas sûr.
Je sais PrimeFaces et RichFaces les deux ont leurs propres fonctions pour retourner un numéro de client, mais je me demandais simplement si il y a un haut-JSF 2.0 méthode pour cela. Voici quelques exemples:
Cela fonctionne pour retourner le outputText ID.
`<h:outputText value="My client ID : #{component.clientId}" />`
Selon le blog ci-dessus, cela devrait fonctionner, mais il ne le fait pas. Je viens d'obtenir aucun résultat.
`<h:button id="sampleButton" value="Sample" />`
`<h:outputText value="sampleButton's client ID : #{sampleButton.clientId}" />`
Cela fonctionne dans PrimeFaces:
`<h:outputText value="PrimeFaces : sampleButton's client ID : #{p:component('sampleButton')}" />`
Travaille dans RichFaces:
`<h:outputText value="RichFaces : sampleButton's client ID : #{rich:clientId('sampleButton')}" />`
Également, si possible, je suis à la recherche de solutions qui ne cassera pas si je change le javax.faces.SEPARATOR_CHAR
valeur ou si je ajouter/supprimer des conteneurs à l'extérieur de l'composants référencés. J'ai passé beaucoup de temps à traquer les problèmes causés par codée en dur ID chemins.
OriginalL'auteur cutchin | 2012-08-25
Vous devez vous connecter pour publier un commentaire.
Vous devez attribuer le composant un nom de variable dans la portée de vue par
binding
attribut.binding
attribut était exclusivement pour exposer les composants de la sauvegarde de haricots - je ne savais pas que vous pouvez également publier un composant sur la portée. Merci beaucoup.Vous êtes les bienvenus.
J'ai aussi ne sais pas qui pourrait le faire! Je n'avais pas vu toutes les références dans les docs pour que l'utilisation de la liaison/EL. Il est nouveau dans JSF 2.x? (est-il aussi disponible en 1.2?)
Il a toujours été dans JSF/EL. Ce n'est pas spécifique à JSF2. Voir aussi cette question/réponse: stackoverflow.com/questions/8168302/...
n'est-il pas des problèmes de collision ou mauvais / mauvaise liaison? j'aimerais avoir le clientId, mais si je risque d'obtenir des valeurs erronées sur les composants... ce serait un tueur
OriginalL'auteur BalusC
Cela a fonctionné pour moi. Je serais intéressé de savoir si il est Ok pour écrire cette réponse.
client.html
UIHelper.java
OriginalL'auteur mert inan
Depuis que ceci a été parmi les premiers résultats de mes recherches sur google, et je me demandais pourquoi j'ai eu une
lorsque vous essayez la solution retenue, je voudrais partager ma solution pour JSF 1.2:
La
UIComponent
'méthodegetClientId
besoin d'unFacesContext
paramètre (voir UIComponent documentation). Afin d'ajouter un lien à la sauvegarde des haricots et aussi une autre méthode qui retourne la clientId:xhtml:
Bean:
Avis que le bean vous liez votre composant devrait être la portée de la requête, sinon vous pourriez finir avec un
java.lang.IllegalStateException (duplicate Id for a component)
(à comparer avec le cette rubrique).OriginalL'auteur david