1

我正在使用 Primefaces 3.5,但遇到了一个非常令人不安的问题。该组件在 xhtml 中如下所示:

<p:tab id="installApp" title="Install application">
        <h:form enctype="multipart/form-data">
        <p:panel header="Upload status" id="upld_status">
          <p:dataTable id="errorTable" var="error"
           value="#{applicationInstallerBean.uploadMsgs}">

           <p:column headerText="Application">
            <h:outputText value="#{error.filename}" />
           </p:column>

           <p:column headerText="Status">
            <h:outputText value="#{error.errorMsg}" />
           </p:column>

          </p:dataTable>        
        </p:panel>

        <p:remoteCommand name="clearPrevious" update="upld_status uploader" action="#{applicationInstallerBean.clearPrevious}" process="@this" />


        <p:fileUpload id="uploader" multiple="true" dragDropSupport="true" onstart="clearPrevious()"
                fileUploadListener="#{applicationInstallerBean.install}" uploadLabel="Install"
                mode="advanced" update="@this upld_status" auto="false"
                allowTypes="/(\.|\/)(zip)$/" styleClass="install_app_fileupload" />                 

        </h:form>
        <p:panel header="Help" toggleable="true">
            <ui:include src="applicationInstallHelp.xhtml" />
        </p:panel>
    </p:tab>

现在我遇到的行为很奇怪:

前几次,使用拖放方法上传文件效果很好。几次上传后,以下错误似乎完全不确定:

  • FileUpload 组件在按下上传按钮后消失,仅在我刷新页面时重新出现
  • onstart方法在上传过程中被调用了很多次
  • 上传多个文件时,包含上传状态的表格不刷新或仅显示其中一个文件
  • 我还从浏览器收到一条消息,说明此页面上正在运行脚本,我可以中止或继续

我试过的:

删除h:form元素,因为这是索引文件中的一个包含,其中已经有一个h:form元素

结果:基本相同,不同的是,第一次将文件拖放到组件上会自动上传,但auto设置为 false

我也尝试过清空浏览器缓存,从头开始重新部署应用程序,关闭多个......都没有运气。

我上传的文件是 80k 到 9mb。

在我看来,上传太多文件会让整个事情变得疯狂,但我真的想不出解决方案。任何帮助,将不胜感激。

更新:在测试过程中,我发现onstart方法在第一次上传后总是触发不止一次。第一次它只触发一次。第二次上传大约 7-10 次,第三次它似乎一直在触发,直到我结束会话。这很奇怪,我认为这可能是问题的根源。对此有什么想法吗?

先感谢您!

4

0 回答 0