我正在尝试使用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));
}
答案 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
这应该有所帮助。