使用p:fileUpload with mode =" advanced"通过AJAX上传文件。

时间:2014-09-24 10:34:36

标签: ajax file-upload primefaces

我有这段代码上传文件:

<p:dialog id="addFileDialog" 
              header="#{text['tasksbacking.attach.addFile']}" 
              widgetVar="addfile"
              height="500"
              width="500"
              closeOnEscape="true" 
              resizable="false" 
              draggable="false"                                            
              fitViewport="true"
              modal="true" 
              appendTo="@(body)">
 <h:form enctype="multipart/form-data">
       <p:fileUpload  fileUploadListener="#{attachmentsComponent.handleFileUpload}" 
                      mode="advanced" 
                      multiple="true" 
                      dragDropSupport="true"
                      allowTypes="/(\.|\/)(gif|jpe?g|png|pdf|doc|docx|txt)$/"
                      label="#{text['tasksbacking.addFile.choose']}"
                      uploadLabel="#{text['tasksbacking.addFile.upload']}"
                      cancelLabel="#{text['tasksbacking.addFile.cancel']}"/>
  </h:form>
  <p:ajax event="close" 
          update=":#{cc.clientId}:addFileDialog,:#{cc.clientId}:formAttachForm:attachTree,:#{cc.clientId}:formAttachForm:msgTreeAction,:#{cc.clientId}:attachContainer" listener="#{attachmentsComponent.onCloseUpload}"/>
</p:dialog>

使用此代码,我可以在关闭对话框时上传文件。但是,如果不刷新页面,我就无法执行另一个AJAX操作。当我不上传文件作为第一个动作时,其他动作执行良好。

在不刷新页面的情况下执行转发操作可能会出现什么问题?表单的enctype可能是问题吗?

1 个答案:

答案 0 :(得分:3)

我遇到了与enctype =&#34; multipart / form-data&#34;相同的问题。形式,我看到这个问题:

在我使用这个答案之后:

最后,它有效!

基本上,组件p:fileUpload的重新渲染/自定义工作正常,这是一个主要的错误。