2010-06-02 6 views
1

Je suis en train de quelque chose comme ceci:RichFaces riches: clientId au sein facelets

<?xml version="1.0"/> 
<ui:composition ....> 
    <h:inputText id="#{id}InputText" value="#{value}"/> 

    <rich:calendar id="#{id}Shevron" 
     popup="true" 
     datePattern="ddMMyy" 
     showInput="false" 
     todayControlMode="hidden" 
     enableManualInput="false" 
     showApplyButton="false" 
     updateDays="14" 
     ondateselected="alert('#{rich:clientId('#{id}Shevron')}');" 
     inputClass="xwingml-input"/> 
</ui:composition> 

Le problème que je suis face ici est que l'ID client réel est généré pour mes facelts composants. Existe-t-il un moyen de passer un identifiant à rich: clientId comme ça? Sinon, comment irait-on sur ce genre de problème?

Merci d'avance !.

Répondre

0

Tous rich:clientId le fait pour afficher document.getElementById() et fournir l'ID complet.

Donc, ne pas utiliser #{rich:clientId('#{id}Shevron')} et il suffit d'utiliser document.getElementById('#{id}Shevron'); et assurez-vous que vous spécifiez l'ID complet (ie., Y compris sous forme d'identité, etc.)

3

Une vieille question, mais ici j'écris ma solution dans le cas où il aide Quelqu'un.

Vous pouvez transmettre des paramètres aux fonctions JSTL sans avoir besoin des opérateurs d'évaluation (# {} $ {}). Jetez un oeil à ce String length example.

Donc, si votre « id » n'a pas été généré dynamiquement cela résoudra votre problème:

#{rich:clientId(id)} 

Mais dans votre cas, vous devez définir une variable supplémentaire pour stocker votre identifiant dynamique:

<c:set var="myDynamicID" value="${id}Shevron"/> 

Ensuite, utilisez-le pour obtenir l'interface utilisateur du client.

#{rich:clientId(myDynamicID)} 
+1

Cela ne fonctionne pas. Merci d'avoir partagé. – feder