ser*_*nni 32 ajax jsf primefaces
还有一个关于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>
Run Code Online (Sandbox Code Playgroud)
这里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"/>
Run Code Online (Sandbox Code Playgroud)
这是正常的行为还是我错过了一些参数?
Bal*_*usC 68
如果待更新的组件是不一样的内部NamingContainer
组件(ui:repeat
,h:form
,h:dataTable
等),那么你需要指定"绝对"客户端ID.带有:
(默认NamingContainer
分隔符)的前缀从root开始.
<p:ajax process="@this" update="count :subTotal"/>
Run Code Online (Sandbox Code Playgroud)
确保subTotal
在生成的HTML中检查组件的客户端ID以获取实际值.如果它h:form
也在内部,例如a ,那么它的前缀也是它的客户端ID,你需要相应地修复它.
<p:ajax process="@this" update="count :formId:subTotal"/>
Run Code Online (Sandbox Code Playgroud)
建议使用空格分隔ID,因为<f:ajax>
不支持逗号分隔,否则启动器会混淆.
归档时间: |
|
查看次数: |
99410 次 |
最近记录: |