2011-01-12 62 views
0

我知道,要让JSF显示图像,路径必须来自Web /应用程序服务器根目录,而不是系统根目录。所以没有绝对的路径。但这是我的问题。由于我将允许用户上传他们自己的图片并稍后显示它们,因此我需要将图像保存在某处。但是,如果将图像保存在我的项目中,未来的项目重新部署可能会删除我的照片。因此我认为,最好将其上传到不受未来重新部署影响的文件夹中。但是,然后h:graphicImage或p:graphicImage不允许我使用绝对路径。我有什么选择来解决这个问题?JSF图像和绝对路径

我知道这给我的路径,我的项目战

ServletContext servletContext = (ServletContext) FacesContext.getCurrentInstance().getExternalContext().getContext(); 
String path = servletContext.getRealPath(""); 

有没有办法让我到Web /应用程序的根?

Primefaces 2.2-RC2
Glassfish的3.0.1
钻嘴鱼科2.0.3 Java EE 6的

编辑

有点研究,我学会了PrimeFaces让你流图像的内容使用FileInputStream,您可以使用绝对路径FileInputStream。这可能是一个很好的解决方案,直到我测试并发现这只能在RequestScoped和SessionScoped Bean上工作,而不能在ViewScoped上工作。

这里是我发布的链接,通知他们的开发人员这个重大的错误。 http://primefaces.prime.com.tr/forum/viewtopic.php?f=3&t=7052

还有其他想法吗?

+0

上述链接包含我的解决方案。一探究竟。 – 2011-01-13 04:13:51

回答

3

仅有图像的特殊的servlet,ImageServlet映射到/image/*(例如),并从它发送图像(让他们作为InputStream,和写入这个到响应OutputStream

+0

你能否给我一些示例代码? – 2011-01-12 16:09:51