JSF图像和绝对路径

时间:2011-01-12 14:13:57

标签: image jsf primefaces absolute-path

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

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

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

有没有办法让我访问网络/应用程序根目录?

Primefaces 2.2-RC2
Glassfish 3.0.1
Mojarra 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

还有其他想法吗?

1 个答案:

答案 0 :(得分:3)

只需映射一个特殊的servlet,ImageServlet映射到/image/*(例如),并从中发送图像(将它们作为InputStream,并将其写入回复OutputStream