JSF从嵌套的子文件夹加载上传的图像

时间:2013-11-06 12:11:07

标签: image jsf

在我的网络应用程序中,我想上传图像,因此使用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”,无论子文件夹层次结构如何。

提前致谢!

1 个答案:

答案 0 :(得分:1)

让路径以/开头,使其相对于上下文根而不是当前打开的文件夹。

<p:graphicImage value="/upload/flag.gif" />