无法在我的jsf2应用程序中显示pdf文件

时间:2013-08-22 16:01:50

标签: pdf jsf-2 primefaces

我尝试在 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.

有人可以帮助我吗?

1 个答案:

答案 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" ... />