如何将服务器路径图像显示到PrimeFaces p:graphicImage?

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。

1个回答

13
你犯了一个概念性错误。不是服务器以某种方式包含并发送图像,而是当web浏览器在HTML中遇到<img>标签时,通过指定的URL下载该图像。所以它必须是一个普通的URL,正是最终用户在Web浏览器地址栏中输入的那个URL,而不是服务器特定的本地磁盘文件系统路径。使用Web浏览器的最终用户确实没有该图像在本地磁盘文件系统上的确切路径。最简单的方法是将该文件夹添加为您正在使用的servlet容器的“虚拟上下文”。目前不清楚您使用的是哪个servlet容器。在Tomcat中,只需向server.xml添加一个新的<Context>即可。
<Context docBase="/path/to/images" path="/images" />

在Glassfish中,只需要在glassfish-web.xml文件中添加一个alternatedocroot即可。

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

参考servlet容器的文档以获取详细信息。最终它们应该可以通过普通URL访问,这样你就可以像使用以下示例一样:

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

其他方法包括使用PrimeFaces StreamedContent API或手写一个servlet。

另请参见:


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接