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

时间:2012-06-01 05:28:29

标签: image jsf primefaces

当我检索服务器路径并显示到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 个答案:

答案 0 :(得分:13)

你犯了一个概念上的错误。服务器不是以某种方式包含和发送图像以及生成的HTML输出。当网页浏览器在HTML中遇到<img src>标记时,按照<img>中指定的URL下载图像。

所以它确实是一个普通的URL,正是最终用户在webbrowser的地址栏中输入的URL,而不是服务器特定的本地磁盘文件系统路径。使用webbrowser的最终用户确实没有在其本地磁盘文件系统上的那个路径上拥有该映像。

最简单的方法是将文件夹添加为您正在使用的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 StreamedContent API或自我生成servlet。

另见: