我在JSF 2.2应用程序中使用Primefaces 5.2 fileUpload actionListener时遇到问题。以下是代码示例:
<h:form id="form1" enctype="multipart/form-data" >
<h:panelGroup id="fileUploader">
<p:fileUpload fileUploadListener="#{fileUploadControllerBean.handleFileUpload}"
onstart="PF('statusDialog').show();"
oncomplete="PF('statusDialog').hide();"
mode="advanced"
dragDropSupport="false"
multiple="false"
update="form1:uploadMessagesGrowl,
:form2:fileUploadMessage,
:form3:fileUploadPanelGroup"
uploadLabel="#{common['validateFileStudents']}"
label="#{common['addFileStudents']}"
cancelLabel="#{common['cancelFileStudents']}"
allowTypes="/(\.|\/)(csv)$/"/>
<p:growl id="uploadMessagesGrowl" showDetail="true" />
</h:panelGroup>
</h:form>
我需要上传一个文件并在actionListener中处理它(解析,验证实际数据等)。之后按钮“插入”按钮如果文件有效并且数据库中不存在此文件中的数据,则应在第3个表单上呈现。当文件中有少量数据时 - 一切正常。但是当存在大量数据时 - 响应在文件验证的所有数据之前返回(在actionListener方法结束之前)。这会导致文件末尾的错误数据发出错误并在响应后验证。
我想,我可以用另一种方式做到这一点 - 只需在上传后添加验证按钮并验证文件,但我想同时使用fileUpload actionlistener进行上传和验证。
任何人都知道为什么在actionListener方法结束之前响应会返回?
答案 0 :(得分:0)
从:form3:fileUploadPanelGroup
参数中删除update
并更新actionListener()末尾的组件。
RequestContext.getCurrentInstance().update(":form3:fileUploadPanelGroup");