0

我在 jsf 框架上使用 primefaces,我在我的数据库中有一个字段,用于保存图像保存位置的 url 源,例如:

表人:

id: integer
name: varchar
img: varchar ("C:\images\person\person1.jpg")

所以,在我在java中的方法中返回那个url字符串但是当我把它放到图形图像标签上时,它会像这样加载http://localhost:8080/..../C:\images\person\person1.jpg

有任何想法吗???

<p:graphicImage value="#{person.img}"/>

这一行是纯 html

<img  src="C:\images\person\person1.jpg" alt=""/>
4

2 回答 2

1

您似乎希望该图像由默认 servlet 提供或作为 JSF 资源提供,因为它位于您的文件系统上。除非该想象是您的网络应用程序的一部分,否则这不会发生。

为了服务它,StreamedContent从你的方法中返回一个对象,像这样return new StreamedContent(new FileInputStream(getPathFromDatabase()));。请注意,返回的属性应该在会话范围或请求范围内可用,因为图像由 Primefaces 资源处理程序在单独的请求中提供。这意味着如果您从视图范围的 bean 返回 StreamedContent 对象,它在后续请求中将不可用。

于 2013-08-14T07:30:51.327 回答
0

graphicsImage 的 value 属性是相对于您的上下文的相对 url(或二进制流,如果您实现 StreamedContent)。这意味着它会附加到您的应用程序的 url 中,从而产生类似:http://hostname:port/appname/relative_image_url.

于 2013-08-14T04:56:17.923 回答