我在jsf框架上使用primefaces,我在我的数据库中有一个字段,用于保存图像保存位置的url源:例如:
表人:
id: integer
name: varchar
img: varchar ("C:\images\person\person1.jpg")
所以,在我的java方法中,y返回那个url字符串但是当我把它放到图形图像标签上时
它像http://localhost:8080/..../C:\images\person\person1.jpg
任何想法???
<p:graphicImage value="#{person.img}"/>
这一行是纯粹的HTML
<img src="C:\images\person\person1.jpg" alt=""/>
答案 0 :(得分:1)
您似乎希望该图像由默认servlet或JSF资源提供,因为它位于您的文件系统上。除非想象是您的网络应用程序的一部分,否则不会发生这种情况。
要提供服务,请从您的方法返回StreamedContent
个对象,例如return new StreamedContent(new FileInputStream(getPathFromDatabase()));
。请注意,返回的属性应该在会话范围或请求范围中可用,因为图像由Primefaces资源处理程序在单独的请求中提供。这意味着如果从视图范围的bean返回StreamedContent对象,则后续请求将无法使用它。
答案 1 :(得分:0)
相对于您的上下文,graphicImage的value属性是相对url(如果实现StreamedContent,则是二进制流)。
这意味着它会附加到您的应用程序的网址上,从而产生类似:http://hostname:port/appname/relative_image_url
。