我尝试在 jsf2 应用程序上显示pdf文件,问题出在路径文件中。
我的pdf文件位于名为 FichesPratiques 的文件夹中,该文件夹位于另一个名为资源的文件夹中(文件夹资源位于 WebContent <内/ strong>)我用它来显示它:
<p:media value="/resources/FichesPratiques/file.pdf" width="100%" height="300px">
但显示任何内容。
更奇怪的是,当我使用下面的链接下载它时,它不起作用。
<h:outputLink value="/resources/FichesPratiques/file.pdf">click</h:outputLink> to download pdf instead.
有人可以帮助我吗?
答案 0 :(得分:1)
仔细查看这些组件的HTML输出中生成的URL(右键单击,在webbrowser中单击查看源)。与<h:graphicImage value>
相反,<p:media value>
和<h:outputLink value>
不会在URL中添加Web应用程序上下文路径。 URL中的前导/
使其相对于请求URL的域根(您在浏览器的地址栏中看到的那个)。
想象一下,
打开了JSF页面
http://localhost:8080/somecontext/page.xhtml
然后那些value="/resources/FichesPratiques/file.pdf"
路径会期望资源出现在
http://localhost:8080/resources/FichesPratiques/file.pdf
但是,实际在
中拥有它
http://localhost:8080/somecontext/resources/FichesPratiques/file.pdf
您应该使用相对于当前请求网址的有效网址
<p:media value="resources/FichesPratiques/file.pdf" ... />
或在URL中明确指定上下文路径
<p:media value="#{request.contextPath}/resources/FichesPratiques/file.pdf" ... />