5

当我检索服务器路径并显示到p:graphicImage标签中时,不会显示图像。图像被加载到 webbapp 文件夹之外。图片的服务器路径是这样的\\qbsserver\Test Folder\test\car.jpg

<p:graphicImage value="\\qbsserver\Test Folder\test\\#{image.imageName}" />

我怎样才能让它们显示?我在 Eclipse IDE 中使用 PrimeFaces 3.0 和 JSF 2.0。

4

1 回答 1

13

你犯了一个概念上的错误。不是服务器以某种方式包含并发送图像以及生成的 HTML 输出。<img src>当它遇到<img>HTML 中的标签时,是网络浏览器通过其 URL 下载图像。

所以它必须是一个正常的 URL,与最终用户在网络浏览器的地址栏中输入的完全一样,而不是特定于服务器的本地磁盘文件系统路径。使用网络浏览器的最终用户在其本地磁盘文件系统上的路径上确实没有该图像。

最简单的方法是将文件夹添加为您正在使用的 servletcontainer 的“虚拟上下文”。目前尚不清楚您使用的是哪一个。在 Tomcat 中,只需<Context>server.xml

<Context docBase="/path/to/images" path="/images" />

在 Glassfish 中,alternatedocroot只需在glassfish-web.xml

<property name="alternatedocroot_1" value="from=/images/* dir=/path/to" />

有关详细信息,请参阅 servletcontainer 的文档。最终,它们应该可以通过普通 URL 访问,以便您可以使用例如:

<p:graphicImage value="/images/#{image.imageName}" />

其他方法包括使用PrimeFaces StreamedContentAPI或自制一个 servlet。

也可以看看:

于 2012-06-01T05:35:10.437 回答