0

我知道要让 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

还有什么想法吗?

4

1 回答 1

3

ImageServlet只需对映射到/image/*(例如)的特殊 servlet进行映像,并从中发送图像(将它们作为 获取InputStream,并将其写入响应OutputStream

于 2011-01-12T14:52:51.807 回答