1

在我的 Web 应用程序中,我想上传图像并因此使用 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”&gt;

但是,我希望能够从包含在子文件夹中的页面访问图像。例如,我有一页位于“admin”子文件夹中:

http://localhost:8080/MyApp/admin/language.xhtml  

在该页面内,相同的 jsf 代码被转换为:

<img src=”http://localhost:8080/MyApp/admin/upload/flag.gif?pfdrid_c=true”&gt; 

这是错误的。

换句话说,它会在“E:\webapp\admin\upload”目录中查找不存在的图像,因此不会显示任何内容。我可以清楚地写出以下代码:

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

为了使它工作,但我认为这是一种不好的做法,因为每次我在不同的子文件夹层次结构中时都必须采用该路径(例如考虑嵌套子文件夹的问题)。

我想知道是否有任何方法可以指定图像的相对路径,例如“upload/flag.gif”,而不管子文件夹层次结构如何。

提前致谢!

4

1 回答 1

1

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

<p:graphicImage value="/upload/flag.gif" />
于 2013-11-07T09:25:37.930 回答