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