3

我是在 JSF 上开发的新手(也是一般 Web 开发的新手),我正在尝试将图像放在页面上。我正在 Eclipse 中开发我的 JSF 应用程序并在 Glassfish 3.1.2 上运行它。我已在 Eclipse 中将 Glassfish 注册为服务器,并通过 Eclipse 运行该应用程序。

我在我的 xhtml 页面上使用以下标记:

<h:graphicImage library="images" name="logo.png"/>

我复制了 META-INF/resources/images/logo.png 中的图像。图像没有出现在页面上,当我查看页面源时,我看到了元素

<img src="RES_NOT_FOUND" />

表示找不到图片。

当我将我的应用程序导出到 war 文件并通过 autodeploy 文件夹将其部署到 Glassfish 时,我得到了相同的结果 - 页面显示,但图像没有出现。

谁能告知为什么找不到图像资源?

4

1 回答 1

6

我将图像复制到 META-INF/resources/images/logo.png

只有当项目代表一个独立的模块 JAR 并最终/WEB-INF/lib在 WAR 中时,此位置才有效。

在您的特定情况下,情况似乎并非如此。您的问题中没有任何内容表明您确实正在开发模块 JAR 文件。显然,您已经以这种方式将其直接放在 WAR 中。这个不对。

您需要将/resources文件夹直接放在公共 Web 内容中,而不是放在META-INF文件夹中。

WebContent
 |-- META-INF
 |-- WEB-INF
 |    |-- faces-config.xml
 |    `-- web.xml
 |-- resources
 |    `-- images
 |         `-- logo.png
 `-- index.xhtml

也可以看看:


与具体问题无关,使用imagesas library name 看起来并不完全正确。只需使用

<h:graphicImage name="images/logo.png"/>

也可以看看:

于 2012-11-29T11:48:29.560 回答