我了解到JSF 2.2有一些特殊的资源机制,可以从我的Web应用程序中的预定义 resources / 文件夹中加载图像。这对于这样的图像效果很好:
<h:graphicImage name="gfx/Logos/Logo.png" alt="Logo" title="Logo" styleClass="logo" />
结果src="..."
按预期转换为/context/javax.faces.resource/gfx/Logos/Logo.png.xhtml
。
我认为同样适用于<h:commandButton image="..." />
- 但事实并非如此。生成的src="..."
属性未正确转换。
我该如何解决这个问题?我真的必须使用CSS背景图片吗?
答案 0 :(得分:4)
根据tag documentation,<h:commandButton image>
采用(相对)URL,而不是JSF资源名称。
通过#{resource['library:name']}
使用EL中的资源映射器。它会将JSF资源标识符转换为具体的URL。
<h:commandButton ... image="#{resource['gfx/Logos/Logo.png']}" />
无关,该东西会生成一个HTML <input type="image">
元素,该元素用作图像地图,可以在点击时捕获鼠标指针坐标。您似乎对可点击的图像更感兴趣。在这种情况下,最好使用<h:commandLink><h:graphicImage>
。
<h:commandLink ...>
<h:graphicImage name="gfx/Logos/Logo.png" />
</h:commandLink>