在我的网络应用程序中,我想上传图像,因此使用p:graphicImage显示它们。我将上传的图像存储在Web应用程序之外 - 特别是在E:\ webapp \ upload。请注意,我的tomcat服务器安装在E:卷上。我创建了一个ImageServlet来读取http://balusc.blogspot.com/2007/04/imageservlet.html中描述的图像。
我在web.xml文件中添加了以下配置:
<servlet>
<servlet-name>imageServlet</servlet-name>
<servlet-class>utilities.ImageServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>imageServlet</servlet-name>
<url-pattern>/upload/*</url-pattern>
</servlet-mapping>
我可以使用“upload / imageName.ext”访问index.xhtml页面中的图像,例如:
<p:graphicImage value="upload/flag.gif" />
此jsf代码已正确转换为以下HTML代码:
<img src=”http://localhost:8080/MyApp/upload/flag.gif?pfdrid_c=true”>
但是,我希望能够从包含在子文件夹中的页面访问图像。例如,我有一个页面位于“admin”子文件夹:
http://localhost:8080/MyApp/admin/language.xhtml
在该页面内,相同的jsf代码将转换为:
<img src=”http://localhost:8080/MyApp/admin/upload/flag.gif?pfdrid_c=true”>
这是错误的。
换句话说,它在“E:\ webapp \ admin \ upload”目录中查找不存在的图像,因此不会显示任何内容。我可以清楚地写下面的代码:
<p:graphicImage value="../upload/flag.gif" />
使它工作,但我认为这是一个不好的做法,因为每次我在不同的子文件夹层次结构时我都必须采用该路径(例如考虑嵌套子文件夹的问题)。
我想知道是否有任何方法可以指定图像的相对路径,例如“upload / flag.gif”,无论子文件夹层次结构如何。
提前致谢!
答案 0 :(得分:1)
让路径以/
开头,使其相对于上下文根而不是当前打开的文件夹。
<p:graphicImage value="/upload/flag.gif" />