p: fileUpload响应在actionListener方法在backingbean中结束之前返回



我在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中处理它(解析、验证实际数据等)。之后,如果文件有效,并且数据库中不存在来自该文件的数据,则应呈现第三个表单上的"插入"按钮。当文件中有少量数据时,一切都可以。但当有大量数据时,在验证文件中的所有数据之前(在actionListener方法结束之前)返回响应。当错误数据出现在文件末尾并在发送响应后进行验证时,这会导致潜在的错误。

我想,我可以用另一种方式来做这件事——只需添加验证按钮并在上传后验证文件,但我想同时使用fileUpload actionlistener进行上传和验证。

有人知道为什么响应在actionListener方法结束之前返回吗?

update参数中删除:form3:fileUploadPanelGroup,并在actionListener()结束时更新组件。

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

相关内容

  • 没有找到相关文章

最新更新