File upload 文件上传后如何更新数据表?

File upload 文件上传后如何更新数据表?,file-upload,primefaces,datatable,updates,File Upload,Primefaces,Datatable,Updates,我有一个数据表和一个文件上传。当我点击上传按钮时,我将其保存在数据库中,但它不会在我的datatable中更新,因此我需要刷新我的页面以在datatable中显示我的数据。 我的目的是当我单击上载按钮时,将其保存在数据库中并更新我的数据表。 我的文件上载: <p:fileUpload fileUploadListener="#{cashMvtView.handleFileUpload}" mode="advanced" dragDropSupport="false"

我有一个数据表和一个文件上传。当我点击上传按钮时,我将其保存在数据库中,但它不会在我的datatable中更新,因此我需要刷新我的页面以在datatable中显示我的数据。 我的目的是当我单击上载按钮时,将其保存在数据库中并更新我的数据表。

我的文件上载:

<p:fileUpload fileUploadListener="#{cashMvtView.handleFileUpload}" mode="advanced" dragDropSupport="false"
                                   multiple="true" update="form2" sizeLimit="100000" fileLimit="3" allowTypes="/(\.|\/)(csv|xls|xlsx)$/" />
                    <p:growl id="messages" showDetail="true"  />

我的数据表:

<h:form id="form2">
            <p:accordionPanel activeIndex="0">
                <p:tab title="Recherche" id="tabRech">
                    <p:dataTable var="cashMvt"  value="#{cashMvtView.listeFilteredCashMvt}" 
                                 selectionMode="single" filteredValue="#{cashMvtView.listeFilteredCashMvt}"
                                 selection="#{cashMvtView.selectedCashMvt}" 
                                 rowKey="#{cashMvt.id}"  tableStyle="width:auto"
                                 paginator="true" widgetVar="tabRecherche" id="tabRecherche"
                                 paginatorPosition="bottom"  rows="14"
                                 paginatorTemplate="{Exporters} {FirstPageLink} {PreviousPageLink} {PageLinks} {NextPageLink} {LastPageLink} 
                                 {RowsPerPageDropdown} {JumpToPageDropdown} {Controle}" 
                                 >

注意:虽然有update='form2',但它仍然不起作用。


接受任何其他技巧

您可以尝试添加一个
oncomplete=“PF('myTableWidget').filter();”
详情如下:

<p:fileUpload fileUploadListener="#{cashMvtView.handleFileUpload}" mode="advanced" dragDropSupport="false"
                    oncomplete="PF('myTableWidget').filter();"
                    multiple="true" update="form2" sizeLimit="100000" fileLimit="3" allowTypes="/(\.|\/)(csv|xls|xlsx)$/" />
      <p:growl id="messages" showDetail="true"  />


您还需要将widgetVar添加到表中(
widgetVar=“myTableWidget”

我通过删除datatable中的FilterdValue修复了此问题。
我认为真正的原因是FilterdValue,因为当我上传文件时,数据保存在我的数据库中,但由于FilterdValue,数据表中没有显示数据。

您检查过XHR连接以查看是否有任何错误吗?非常感谢@OscarPérez,您一直在帮助我,我通过从数据表中删除FilterdValue解决了我的问题。很高兴能帮助您。如果可以,请添加一个答案,解释您是如何找到解决方案的。然后,如果其他人也有同样的问题,他们就会知道该怎么办。如果问题不起作用,最好设法找到真正的原因,而不是尝试解决办法。你的解决方法不清楚。。。
oncomplete=“#{controller.update}”
应该做什么?而
public void refresh()
needed在哪里?编辑后,函数为:
update()
,并在
oncomplete
中调用它,它不是!oncomplete用于调用客户端javascript函数,update是一种java方法。此方法将在渲染时调用,而不是在oncomplete完成时调用。所以这行不通!谢谢,你说得对。这实际上使它更容易:
oncomplete=“PF('myTableWidget').filter();”
并且不需要bean中的方法。我没有尝试过这个,但这在其他元素中对我有效。谢谢你们,我通过删除我的datatable中的FilterdValue解决了这个问题。很好,你们找到了一个解决方案!我假设您确实需要
过滤器的值
。谢谢@Robert对我的帮助