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

Mut*_*thu 5 jsf image primefaces

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

<p:graphicImage value="\\qbsserver\Test Folder\test\\#{image.imageName}" />
Run Code Online (Sandbox Code Playgroud)

如何让它们显示?我在Eclipse IDE中使用PrimeFaces 3.0和JSF 2.0.

Bal*_*usC 13

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

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

最简单的方法是将文件夹添加为您正在使用的servlet容器的"虚拟上下文".目前还不清楚你正在使用哪一个.在Tomcat中,这是一个添加新内容<Context>的问题server.xml

<Context docBase="/path/to/images" path="/images" />
Run Code Online (Sandbox Code Playgroud)

而在Glassfish中,它是一个添加alternatedocrootglassfish-web.xml

<property name="alternatedocroot_1" value="from=/images/* dir=/path/to" />
Run Code Online (Sandbox Code Playgroud)

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

<p:graphicImage value="/images/#{image.imageName}" />
Run Code Online (Sandbox Code Playgroud)

其他方法涉及使用PrimeFaces StreamedContentAPI或homegrowing servlet.

也可以看看: