PrimeFaces orderList 未随更改的顺序更新
PrimeFaces orderList not updated with changed order
orderList中的顺序变化对列表变量没有影响。我尝试了 primefaces orderlist not getting updated with the changed order and Primefaces: How to persist reordered data from a p:orderList? 并检查了其他多个问题,但是 none 对我有用。我在提交命令按钮中添加了进程并更新了orderList,我向命令按钮添加了ajax处理,立即到orderList,仍然没有。
HTML
<p:dialog id="editDialog" widgetVar="editDialog" header="Editace dokumentu" modal="true" showEffect="fade" width="90%" height="80vh" resizable="true" closable="true" closeOnEscape="true">
<p:outputPanel id="container" widgetVar="container" style="width: 100%; height:100%;">
<h:form id="editTable" widgetVar="editTable">
<p:panelGrid layout="grid" columns="2" columnClasses="label,value" styleClass="ui-panelgrid-blank" rendered="#{documentsInboxView.pdfFileType}">
<p:outputLabel value="Pořadí stránek" for="@next" rendered="#{documentsInboxView.filePagesNumber gt 1}"/>
<h:form rendered="#{documentsInboxView.filePagesNumber gt 1}">
<p:orderList value="#{documentsInboxView.pagesOrder}" var="page" itemValue="#{page}" itemLabel="#{page}" style="width: 100%;" controlsLocation="right" responsive="true" id="pagesOrderOrderList" widgetVar="pagesOrderOrderList" immediate="true">
<p:column>
<h:outputText value="#{page}" />
</p:column>
</p:orderList>
<p:commandButton ajax="true" type="submit" value="Změnit pořadí" onstart="PF('blockUIWidget').show();" oncomplete="PF('blockUIWidget').hide();" actionListener="#{documentsInboxView.changePagesOrder}" immediate="true" update="@widgetVar(container) @widgetVar(pagesOrderOrderList)" process="@this @widgetVar(pagesOrderOrderList)"/>
</h:form>
</p:panelGrid>
</h:form>
</p:outputPanel>
</p:dialog>
通过处理和更新订单列表将 ajax 添加到订单列表解决了问题。
<p:orderList value="#{documentsInboxView.pagesOrder}" var="page" itemValue="#{page}" itemLabel="#{page}" style="width: 100%;" controlsLocation="right" responsive="true" id="pagesOrderOrderList" widgetVar="pagesOrderOrderList" immediate="true">
<p:ajax event="reorder" process="@this" update="@this"/>
<p:column>
<h:outputText value="#{page}" />
</p:column>
</p:orderList>
orderList中的顺序变化对列表变量没有影响。我尝试了 primefaces orderlist not getting updated with the changed order and Primefaces: How to persist reordered data from a p:orderList? 并检查了其他多个问题,但是 none 对我有用。我在提交命令按钮中添加了进程并更新了orderList,我向命令按钮添加了ajax处理,立即到orderList,仍然没有。
HTML
<p:dialog id="editDialog" widgetVar="editDialog" header="Editace dokumentu" modal="true" showEffect="fade" width="90%" height="80vh" resizable="true" closable="true" closeOnEscape="true">
<p:outputPanel id="container" widgetVar="container" style="width: 100%; height:100%;">
<h:form id="editTable" widgetVar="editTable">
<p:panelGrid layout="grid" columns="2" columnClasses="label,value" styleClass="ui-panelgrid-blank" rendered="#{documentsInboxView.pdfFileType}">
<p:outputLabel value="Pořadí stránek" for="@next" rendered="#{documentsInboxView.filePagesNumber gt 1}"/>
<h:form rendered="#{documentsInboxView.filePagesNumber gt 1}">
<p:orderList value="#{documentsInboxView.pagesOrder}" var="page" itemValue="#{page}" itemLabel="#{page}" style="width: 100%;" controlsLocation="right" responsive="true" id="pagesOrderOrderList" widgetVar="pagesOrderOrderList" immediate="true">
<p:column>
<h:outputText value="#{page}" />
</p:column>
</p:orderList>
<p:commandButton ajax="true" type="submit" value="Změnit pořadí" onstart="PF('blockUIWidget').show();" oncomplete="PF('blockUIWidget').hide();" actionListener="#{documentsInboxView.changePagesOrder}" immediate="true" update="@widgetVar(container) @widgetVar(pagesOrderOrderList)" process="@this @widgetVar(pagesOrderOrderList)"/>
</h:form>
</p:panelGrid>
</h:form>
</p:outputPanel>
</p:dialog>
通过处理和更新订单列表将 ajax 添加到订单列表解决了问题。
<p:orderList value="#{documentsInboxView.pagesOrder}" var="page" itemValue="#{page}" itemLabel="#{page}" style="width: 100%;" controlsLocation="right" responsive="true" id="pagesOrderOrderList" widgetVar="pagesOrderOrderList" immediate="true">
<p:ajax event="reorder" process="@this" update="@this"/>
<p:column>
<h:outputText value="#{page}" />
</p:column>
</p:orderList>