<p:filedownload>不下载文件</p:filedownload>

时间:2014-01-02 21:04:54

标签: jsf-2 primefaces download

我正在尝试使用primefaces filedownload下载文件(将它们发送到浏览器)。由于某种原因,它不会将文件发送到浏览器。当我点击页面上的按钮时,我正在使用p:filedownload的弹出对话框显示出来。我已经看到了这个:p:fileDownload bean method is invoked but file download does not show up 但问题是,当用户选择要下载的fileName时,我需要通过调用操作来设置bean中的文件:

test.xhtml

<p:dialog>
    <p:dataTable var="currentAttachment" value="#{managerBean.attachmentsForPatient()}">
      <p:column>
        <p:commandLink value="#{currentAttachment.name}"  action="#{managerBean.downloadAttachment(currentAttachment)}">
          <p:fileDownload value="#{managerBean.file}" />  
        </p:commandLink>
      </p:column>
    </p:dataTable>
</p:dialog>

managerBean.java

public void downloadAttachment(Attachment attachment) throws IOException {
    InputStream stream = ((ServletContext)FacesContext.getCurrentInstance().getExternalContext().getContext()).getResourceAsStream(attachment.getContent().toString());  
    setFile(new DefaultStreamedContent(stream)); 
}

1 个答案:

答案 0 :(得分:1)

请检查您的web.xml以获取正确的配置。 样本发布在这里..

<filter>
    <filter-name>PrimeFaces FileUpload Filter</filter-name>
    <filter-class>org.primefaces.webapp.filter.FileUploadFilter</filter-class>
</filter>
<filter-mapping>
    <filter-name>PrimeFaces FileUpload Filter</filter-name>
    <servlet-name>Faces Servlet</servlet-name>
</filter-mapping>

还要检查是否添加了以下依赖项

  

公地文件上传的* .jar,公地-IO的* .jar

这应该有所帮助。