JSF(Primefaces)通过ID的几个元素的ajax更新
还有一个关于JSF的问题,特别是Primefaces。
在id的同时更新元素的ajax问题有以下问题。 如果页面上的元素逐个进行,那么ajax更新会执行正常:
<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>
这里id为“count”的元素首先进入,然后是具有id“subtotal”的元素。 如果页面上的元素不是严格一个一个的,那么带有“小计”id的第二个元素不会被更新:
<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"/>
这是正常行为还是我错过了一些参数?
如果要更新的组件不在相同的NamingContainer
组件( ui:repeat
, h:form
, h:dataTable
等)中,则需要指定“绝对”客户端ID。 前缀为:
默认的NamingContainer
分隔符)从根开始。
<p:ajax process="@this" update="count :subTotal"/>
可以肯定的是,请检查生成的HTML中subTotal
组件的客户端ID以获取实际值。 如果它也位于例如h:form
中,那么它的前缀也是其客户端ID,因此您需要相应地修复它。
<p:ajax process="@this" update="count :formId:subTotal"/>
更推荐使用空格分隔ID,因为<f:ajax>
不支持逗号分隔,否则初学者会感到困惑。
上一篇: JSF(Primefaces) ajax update of several elements by ID's
下一篇: jsf message severity