Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/apache-spark/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ajax 如何在PrimeFaces中关闭对话框后刷新p:dataTable?_Ajax_Jsf_Primefaces_Datatable - Fatal编程技术网

Ajax 如何在PrimeFaces中关闭对话框后刷新p:dataTable?

Ajax 如何在PrimeFaces中关闭对话框后刷新p:dataTable?,ajax,jsf,primefaces,datatable,Ajax,Jsf,Primefaces,Datatable,一旦我关闭了对话框,我需要您的帮助,以分页方式刷新整个数据表。关闭对话框后使用当前代码,数据表将被刷新,如果所选项目位于第一页,我可以看到更新 但是,如果我使用过滤器搜索特定项目,然后单击视图图标查看对话框,然后关闭对话框。dataTable将不会刷新,除非我从筛选器中删除了搜索的项目,然后我再次尝试搜索,我将找到更新 该页面的代码为: <h:form id="Requests"> <p:dataTable id="PendingRequests"

一旦我关闭了
对话框
,我需要您的帮助,以分页方式刷新整个
数据表。关闭
对话框后使用当前代码
数据表
将被刷新,如果所选项目位于第一页,我可以看到更新

但是,如果我使用过滤器搜索特定项目,然后单击视图图标查看对话框,然后关闭
对话框
dataTable
将不会刷新,除非我从筛选器中删除了搜索的项目,然后我再次尝试搜索,我将找到更新

该页面的代码为:

<h:form id="Requests">
    <p:dataTable id="PendingRequests"
                 var="hr"
                 value="#{hrd.pendingRequests}"
                 paginator="true"
                 rows="15"
                 paginatorTemplate="{RowsPerPageDropdown} {FirstPageLink} {PreviousPageLink} {CurrentPageReport} {NextPageLink} {LastPageLink}"
                 rowsPerPageTemplate="5,10,15"
                 paginatorPosition="bottom"
                 filteredValue="#{hrd.filteredPendingRequests}">

        <p:column headerText="Req. No." sortBy="#{hr.reqNo}" filterMatchMode="contains" filterBy="#{hr.reqNo}">
            <h:outputText value="#{hr.reqNo}"/>
        </p:column>

        <p:column headerText="Print Count" filterMatchMode="contains" filterBy="#{hr.printCount}">
            <h:outputText value="#{hr.printCount}"/>
        </p:column>

        <p:column>
            <f:facet name="header">View</f:facet>
            <p:commandButton id="submitbutton"
                             update=":Requests:#{hr.dialogueName} "
                             oncomplete="PF('#{hr.certificateDialogue}').show()"
                             title="View">

                <f:setPropertyActionListener value="#{hr}" target="#{hrd.selectedRequest}"/>
            </p:commandButton>
        </p:column>
    </p:dataTable>
</h:form>
updateDataable()
方法的代码如下:

public void UpdateDatatable(CloseEvent event) {

    listPendingRequests = new ArrayList<PendingRequests>();

    try {
        //Select Statement

        while (result.next()) {
            PendingRequests pendingList = new PendingRequests();
            reqNo = result.getString("REQ_SEQ_NO");
            printCount = result.getString("DOC_PRINTED_CNT" + 1);
            pendingList.setReqNo(reqNo);
            pendingList.setPrintCount(printCount);
        }

    } catch (Exception e) {
        e.printStackTrace();
    }
}
public void updateDataable(CloseEvent事件){
listPendingRequests=new ArrayList();
试一试{
//Select语句
while(result.next()){
PendingRequests pendingList=新的PendingRequests();
reqNo=result.getString(“REQ序列号”);
printCount=result.getString(“DOC\u PRINTED\u CNT”+1);
待处理列表。设置请求编号(请求编号);
pendingList.setPrintCount(printCount);
}
}捕获(例外e){
e、 printStackTrace();
}
}

将widgetvar添加到数据表
widgetvar=“dtWidgetVar”

然后:

<p:ajax event="close" listener="#{hrd.UpdateDatatable}" update=":Requests:PendingRequests" onComplete="PF('dtWidgetVar').filter()" />

我希望这有助于:

<p:dialog id="dialog-test" onHide="refreshTable();">
  ...
</p:dialog>

...
将以下内容放在页面末尾:

<p:remoteCommand name="refreshTable" action="#{hrd.UpdateDatatable}"
                 partialSubmit="true" process="@this" update="Requests" />

如果需要将对话框中的信息发送到backBean,可能需要更改流程,添加要发送的对话框id或元素id:

<p:remoteCommand name="refreshTable" action="#{hrd.UpdateDatatable}"
                 partialSubmit="true" process="@this, dialog-test" update="Requests" />


祝你好运

您似乎正在使用filteredValue。。。你也会更新那里的记录吗?或者可能不通过ajax标记上的update属性实际更新数据表,而是为数据表提供一个
widgetVar=“dtWidgetVar”
属性,并在ajax标记上执行
onComplete=“PF('dtWidgetVar').filter()”
tagb@Kukeltje是的,我将筛选一个值,然后单击图标查看它。如果我关闭对话框,我需要将记录计数更新为递增1。我将尝试您的建议,在关闭对话框时将onComplete保留在ajax标记中,我会看到。但是,onComplete=“PF('dtWidgetVar').filter()”是什么意思?@Kukeltje我的问题是,我想在关闭打开的数据库后刷新数据表dialog@Kukeltje谢谢你的帮助。。。它起作用了不客气,很高兴它起了作用
<p:remoteCommand name="refreshTable" action="#{hrd.UpdateDatatable}"
                 partialSubmit="true" process="@this, dialog-test" update="Requests" />