Comment faire PrimeFaces Sélecteurs comme dans la mise à jour=“@(.myClass)” travail?
Je ne comprends pas comment PrimeFaces sélecteurs (PFS) de travail.
<h:outputText value="#{bean.text1}" styleClass="myClass" />
<p:commandButton update="@(.myClass)" />
Je peux l'utiliser. Et je pense que c'est un outil fantastique mais il ne fonctionne pas toujours pour moi. Le .myClass
est côté client sélecteur jQuery. Comment JSF sur le côté serveur de savoir ce que mettre à jour?
Je peux comprendre comment la normale JSF sélecteurs d'ID travail.
<h:outputText value="#{bean.text1}" id="textId" />
<p:commandButton update="textId" />
La textId
fait référence à un ID de composant dans le composant de l'arbre tel que défini dans le fichier XHTML à côté serveur. Donc, je peux comprendre comment JSF trouve le bon composant.
Mais si vous utilisez primefaces sélecteurs, du côté du client sélecteurs jQuery sont utilisés. Comment JSF savoir quel composant doit être mis à jour? Parfois, j'ai des problèmes avec PFS. Il ne semble pas fonctionner toujours pour moi. Est-il quelque chose que vous devriez garder à l'esprit si vous utilisez PFS?
Vous devez vous connecter pour publier un commentaire.
Vous savez probablement déjà que PrimeFaces est à l'aide de jQuery sous les couvertures. PrimeFaces les Sélecteurs sont basé sur jQuery. Quelque chose que vous spécifiez dans
@(...)
sera utilisé comme sélecteur jQuery sur le HTML en cours arborescence DOM. Pour n'importe quel élément HTML, ce qui a un ID, exactement cet IDENTIFIANT sera utilisé dans leupdate
.En gros, pour un
update="@(.myclass)"
, PrimeFaces, sous la couvre à peu près cela:Donc dans le cas où, par exemple, de
ce bouton de commande de mise à jour
va se retrouver avec exactement le même effet que
Noter que cela fonctionne aussi pour les Id généré automatiquement. I. e. le
<h:form id>
n'est pas obligatoire.Il peut arriver que vous avez sélectionné "trop" (par exemple
@(form)
ne sélectionnez pas la forme actuelle, mais tous des formulaires, exactement comme$("form")
en jQuery!), ou que vous avez réellement choisi rien (quand le DOM HTML de l'élément a en fait pas de l'ID). Enquête sur les Id d'éléments dans le DOM HTML arbre et de la demande de charge utile dans le trafic HTTP surveiller le doit donner des indices.Les éléments souhaités dans le DOM HTML arbre doit avoir un (généré automatiquement) ID. Le
javax.faces.partial.render
paramètre de la requête HTTP moniteur de trafic doit contenir le droit de Id client. L'élémentrendered
attribut du composant JSF arbre doit évaluertrue
cours de mise à jour. Etcetera.Dans votre exemple, le
<h:outputText>
ne finira pas dans le code HTML généré en sortie avec toute pièce d'identité. Attribution d'unid
devrait résoudre votre problème avec la mise à jour il.Ainsi, cet exemple ne fonctionne pas
mais cet exemple de travail (notez que l'affectation de la forme d'un ID n'est pas nécessaire):
id
attribut sur la non-NamingContainer
composants.rendered="false"
ne peuvent pas être affectés directement par les sélectionnant dans uneupdate
. Cependant, ils peuvent être mis à jour en sélectionnant le parent. Par exempleupdate="@(#container :button)
ne fonctionnera pas, maisupdate="@(#container)
volonté. S'il vous plaît corrigez-moi @BalusC en cas de besoin! 🙂Client side expression (PFS and @widgetVar) are not supported... expression "@(.my-class)"
message. Personne ne sait si c'est possible?