我知道要让 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
还有什么想法吗?