p:fileUpload响应在actionListener方法以支持bean结束之前返回

时间:2015-06-30 08:08:20

标签: jsf file-upload jsf-2 primefaces

我在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方法结束之前响应会返回?

1 个答案:

答案 0 :(得分:0)

:form3:fileUploadPanelGroup参数中删除update并更新actionListener()末尾的组件。

RequestContext.getCurrentInstance().update(":form3:fileUploadPanelGroup");