Comment puis-je connaître l'id d'un composant JSF donc je peux l'utiliser en Javascript

Problème: Parfois, vous voulez accéder à un composant à partir de javascript avec
getElementById, mais id sont générés dynamiquement dans JSF, de sorte que vous
besoin d'une méthode pour obtenir de l'un des objets de l'id. Je réponds ci-dessous sur comment vous pouvez le faire.


Question D'Origine:
Je veux utiliser un code comme ci-dessous. Comment puis-je référence de la inputText JSF dans mon Javascript?

<html xmlns="http://www.w3.org/1999/xhtml"
      xmlns:h="http://java.sun.com/jsf/html"
      xmlns:f="http://java.sun.com/jsf/core">
    <head>
       <title>Input Name Page</title>
        <script type="javascript" >
          function myFunc() {
            //how can I get the contents of the inputText component below          
            alert("Your email address is: " + document.getElementById("emailAddress").value);
          }
       </script>
    </head>
    <h:body>
        <f:view>
            <h:form>
                Please enter your email address:<br/>
                <h:inputText id="emailAddresses" value="#{emailAddresses.emailAddressesStr}"/>
                <h:commandButton onclick="myFunc()" action="results" value="Next"/>
            </h:form>
        </f:view>
    </h:body>
</html>

Mise à jour: ce post Identificateurs de Client dans JSF2.0 décrit à l'aide d'une technique telle que:

<script type="javascript" >
  function myFunc() {
    alert("Your email address is: " + document.getElementById("#{myInptTxtId.clientId}").value);
  }
</script>

<h:inputText id="myInptTxtId" value="backingBean.emailAddress"/>
<h:commandButton onclick="myFunc()" action="results" value="Next"/>

Ce qui suggère que l'attribut id sur le inputText composant
crée un objet qui peut être consulté avec EL à l'aide de #{myInptTxtId},
dans l'exemple ci-dessus. L'article poursuit en affirmant que les JSF 2.0 ajoute
le zéro argument getClientId() méthode à la UIComponent classe.
Permettant ainsi à la #{myInptTxtId.clientId} construire suggéré
ci-dessus pour obtenir le réel généré id du composant.

Bien que dans mes tests, cela ne fonctionne pas. D'autres personnes peuvent confirmer ou de nier.
Les réponses suggérées ci-dessous souffrent d'inconvénient que ci-dessus
la technique ne fonctionne pas. Donc, il serait bon de savoir si la technique ci-dessus
en fait, il fonctionne.

InformationsquelleAutor ftravers | 2011-05-18