我的文件位于WebContent/WEB-INF/resources/file/theFile.pdf
内,我是否可以知道如何下载显示常规下载弹出对话框的文件或在网页中呈现它(只要最简单的方法就可以使用)当用户点击页面的链接?我正在使用JSF2.0,目前使用h:outputLink
下载pdf文件但没有运气,控制台输出显示我的错误:
File not found: /pages/resources/file/theFile.pdf
如何告诉JSF删除/pages
并从/resources
开始,因为我的文件位于资源文件夹中。
这是下载代码:
<h:outputLink value="resources/file/theFile.pdf">
<h:graphicImage library="images" name="pdf.jpg" style="border:none"/>
</h:outputLink>
答案 0 :(得分: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>
无关,您在library
上使用<h:graphicImage>
属性毫无意义。另请参阅What is the JSF resource library for and how should it be used?
答案 1 :(得分:3)
尝试使用#{request.contextPath}
前缀
<h:outputLink value="#{request.contextPath}/resources/file/theFile.pdf">
<h:graphicImage library="images" name="pdf.jpg" style="border:none"/>
</h:outputLink>