gpt4 book ai didi

ajax - 如何使用 p :ajax to update several components in order

转载 作者:行者123 更新时间:2023-12-04 22:13:59 24 4
gpt4 key购买 nike

我正在尝试呈现以下 JSF 页面:

<h:form id="form" prependId="false">
<h:panelGrid width="100%">
<h:panelGroup id="tableDiv" layout="block">
<h:panelGroup layout="block" style="text-align: center;">
<p:dataTable id="table" var="_item"
value="#{primeBean.findTableModel()}">
...
</p:dataTable>
</h:panelGroup>
</h:panelGroup>
<h:panelGrid columns="2" width="100%">
<h:panelGroup id="barChartDiv" layout="block">
<p:barChart id="barChart"
value="#{primeBean.findCartesianModel()}">
<p:ajax event="itemSelect" listener="#{primeBean.handleItemSelect}"
update="pieChartDiv,tableDiv" />
</p:barChart>
</h:panelGroup>
<h:panelGroup id="pieChartDiv" layout="block">
<h:panelGroup layout="block">
<p:pieChart id="pieChart">
<p:ajax event="itemSelect" listener="#{primeBean.handleItemSelect}"
update="tableDiv" />
</p:pieChart>
</h:panelGroup>
</h:panelGroup>
</h:panelGrid>
</h:panelGrid>
</h:form>

当我单击 p:barChart 上的任何栏时,我希望更新属性中的组件将按照我声明 (pieChartDiv,tableDiv) 的顺序呈现,但它们以相反的顺序呈现 (tableDiv,pieChartDiv)

这是正常行为吗?如何按照项目声明的顺序更新组件列表?

最佳答案

这是不可能的。组件的搜索和更新顺序与它们在 JSF 组件树中出现的顺序完全相同。

一种方法是重新排列/交换树层次结构中的两个组件,并在 CSS 的帮助下重新定位它们。然而,这是相当笨拙的。

另一种方法是在第一个组件更新完成后更新第二个组件(因此实际上最终会收到 2 个 ajax 请求而不是 1 个)。您可以在 <p:remoteCommand> 的帮助下实现这一点,它在 <p:ajax> 完成时被调用。

所以,而不是

<p:ajax ... update="pieChartDiv,tableDiv" />


<p:ajax ... update="pieChartDiv" oncomplete="updateTableDiv()" />
...
<p:remoteCommand name="updateTableDiv" update="tableDiv" />

关于ajax - 如何使用 p :ajax to update several components in order,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15488162/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com