Comment utiliser p:ajax pour mettre à jour plusieurs composants dans l'ordre
J'essaie de rendre le suivant JSF page:
<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>
Quand je clique dans n'importe quel bar sur p:barChart
, je m'attends à ce que les composantes de la mise à jour de l'attribut serait rendue dans l'ordre que je déclare (pieChartDiv,tableDiv)
, mais ils sont rendus dans l'ordre inverse (tableDiv,pieChartDiv)
.
Est-ce un comportement normal? Comment puis-je mettre à jour un composant de la liste dans l'ordre les éléments sont déclarés?
OriginalL'auteur gustavodevmax | 2013-03-18
Vous devez vous connecter pour publier un commentaire.
Ce n'est pas possible de cette façon. Les composants sont recherchés et mis à jour exactement dans le même ordre qu'ils apparaissent dans le programme JSF composant de l'arbre.
Un autre moyen serait de réorganiser/permuter les deux composants dans la hiérarchie de l'arbre et de les repositionner visuellement avec l'aide de CSS. Ce n'est cependant plutôt maladroit.
Une autre solution serait de mettre à jour la 2ème composante sur l'intégralité de la mise à jour de la 1ère composante (et donc jusqu'à la fin avec 2 requêtes ajax au lieu de 1). Vous pouvez le faire avec l'aide de
<p:remoteCommand>
qui est invoqué sur l'intégralité de la<p:ajax>
.Ainsi, au lieu de
utilisation
Vous êtes les bienvenus. Je ne suis pas sûr si j'ai bien compris votre dernière question. Que voulez-vous dire exactement? Qui? Quel composant? "Pourrait"?
J'ai essayé de dire que la balise p: ajax, par exemple, pourrait inclure un attribut Booléen appelé "updateInOrder' pour permettre une manière plus simple de faire ce que vous proposé de résoudre ce problème. Dans le cas, si l'attribut était vrai, l'ordre de la mise à jour pourrait être suivi comme indiqué. Mais c'était juste une pensée de la simplification de la solution, la question est déjà réglée. Merci!!!!
Merci!!!! Cela résout le PrimeFaces bug avec <p:ajax mise à jour> lorsque vous mettez à jour une table de données ou de contrôle treeview.
OriginalL'auteur BalusC
De ce que je peux voir...L'ordre dans lequel Vous avez déclaré vos composants
"barChartDiv" et "pieChartDiv" sont à la fois deuxième composants
OriginalL'auteur Cesar Miguel
Pas si élégante solution de travail, mais peut-être ceci:
OriginalL'auteur Viktoria Nora Ress