如何在JSF 2.0中制作下载文件?

hua*_*n68 8 jsf-2

我有文件位于里面WebContent/WEB-INF/resources/file/theFile.pdf,我可以知道如何在用户点击链接时下载文件,该文件将显示常规下载弹出对话框或在网页中呈现它(任何一个都可以做到最简单的方法)页面?我正在使用JSF2.0,目前正在使用h:outputLink下载pdf文件,但没有运气,控制台输出显示我这个错误:

File not found: /pages/resources/file/theFile.pdf
Run Code Online (Sandbox Code Playgroud)

如何告诉JSF删除/pages并开始,/resources因为我的文件位于资源文件夹中.

这是下载代码:

<h:outputLink value="resources/file/theFile.pdf">
  <h:graphicImage library="images" name="pdf.jpg" style="border:none"/>
</h:outputLink>
Run Code Online (Sandbox Code Playgroud)

Bal*_*usC 10

我有文件位于里面 WebContent/WEB-INF/resources/file/theFile.pdf

首先,/WEB-INF(和/META-INF)的内容公开(因为它们可能包含敏感信息,如web.xml标记文件,模板等).将文件放在公共webcontent 外面 /WEB-INF.

假设它现在位于WebContent/resources/file/theFile.pdf,那么您可以按如下方式链接到它:

<h:outputLink value="#{request.contextPath}/resources/file/theFile.pdf">
    <h:graphicImage library="images" name="pdf.jpg" style="border:none"/>
</h:outputLink>
Run Code Online (Sandbox Code Playgroud)

具体问题无关,您对library属性的使用<h:graphicImage>毫无意义.另请参见什么是JSF资源库以及如何使用它?