JSF(Primefaces) ajax mise à jour de plusieurs éléments par ID
Encore une question concernant le JSF.En Particulier, Primefaces.
Avez des problème avec ajax mise à jour des éléments par id en même temps.
Si des éléments à la page va un par un ,qu'ajax mise à jour effectue ok:
<ui:repeat value="#{showProducts.inCart}" var="cart">
<td><p:spinner min="0" value="#{cart.count}" immediate="true">
<p:ajax process="@this" update="count,subTotal"/></p:spinner></td>
<td><h:outputText value="#{cart.totalPrice}" id="count"/></td>
<h:outputText value="#{showProducts.subTotal}" id="subTotal"/>
</ui:repeat>
Ici l'élément avec l'id "count" va d'abord,puis l'élément avec l'id "sous-total" va à la seconde.
Dans ce cas,les éléments de la page ne sont pas strictement un par un,ce second élément avec "sous-total" id n'est pas de mise à jour:
<ui:repeat value="#{showProducts.inCart}" var="cart">
<td><p:spinner min="0" value="#{cart.count}" immediate="true">
<p:ajax process="@this" update="count,subTotal"/></p:spinner></td>
<td><h:outputText value="#{cart.totalPrice}" id="count"/></td>
<td><h:outputText value="#{cart.place}" /></td>
</ui:repeat>
<h:outputText value="#{showProducts.subTotal}" id="subTotal"/>
Est-ce un comportement normal ou je m'ennuie de certains paramètres?
Vous devez vous connecter pour publier un commentaire.
Si le pour-être-mis à jour le composant n'est pas à l'intérieur de la même
NamingContainer
composant (ui:repeat
,h:form
,h:dataTable
, etc), alors vous avez besoin de spécifier le "absolue" de l'ID du client. Préfixe:
(la valeur par défautNamingContainer
caractère séparateur) pour démarrer à partir de la racine.Pour vous en assurer, vérifiez l'ID du client de la
subTotal
composant dans le code HTML généré pour la valeur réelle. Si c'est à l'intérieur, par exemple, unh:form
ainsi, alors il est précédée de son IDENTIFIANT client et ainsi vous soit nécessaire de la corriger en conséquence.Espace de séparation de l'Id est de plus recommandé que
<f:ajax>
ne supporte pas la séparation par virgule et démarreurs serait autrement se confondre.