0

我尝试在我的jsf2应用程序上显示一个 pdf 文件,问题出在路径文件中。

我的 pdf 文件位于名为FichesPratiques的文件夹内,该文件夹位于另一个名为resources的文件夹内(文件夹资源位于WebContent内),我用它来显示它:

<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.

有人能帮我吗 ?

4

1 回答 1

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

您应该使用相对于当前请求 URL 的有效 URL,

<p:media value="resources/FichesPratiques/file.pdf" ... />

或在 URL 中明确指定上下文路径,

<p:media value="#{request.contextPath}/resources/FichesPratiques/file.pdf" ... />
于 2013-08-22T16:29:42.150 回答