我是新手开发JSF(以及一般的Web开发新手),我试图在页面上放置一个图像。 我正在Eclipse中开发我的JSF应用程序并在Glassfish 3.1.2上运行它。我已将Glassfish注册为Eclipse中的服务器,并通过Eclipse运行应用程序。
我在xhtml页面上使用以下标记:
<h:graphicImage library="images" name="logo.png"/>
我将图像复制到META-INF / resources / images / logo.png中。 图像没有出现在页面上,当我查看页面源时,我看到了元素
<img src="RES_NOT_FOUND" />
表示未找到图像。
当我将我的应用程序导出到war文件并通过autodeploy文件夹将其部署到Glassfish时,我得到相同的结果 - 页面显示,但图像不会出现。
有人可以告知为什么找不到图像资源吗?
答案 0 :(得分:5)
我将图像复制到META-INF / resources / images / logo.png
此位置仅在项目代表独立模块JAR时才有效,该JAR最终以WAR的/WEB-INF/lib
结束。
在您的特定情况下,情况似乎并非如此。您的问题中没有任何内容表明您确实正在开发模块JAR文件。显然你已经用这种方式将它直接放在了WAR中。这个不对。
您需要将/resources
文件夹直接放在公共网页内容中,而不是META-INF
文件夹中。
WebContent
|-- META-INF
|-- WEB-INF
| |-- faces-config.xml
| `-- web.xml
|-- resources
| `-- images
| `-- logo.png
`-- index.xhtml
无关具体问题,使用images
作为库名称看起来并不完全正确。只需使用
<h:graphicImage name="images/logo.png"/>