<h:commandButton image="..." /> 指定 JSF 资源名称时未正确呈现
<h:commandButton image="..." /> not rendered properly when specifying JSF resource name
我了解到 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 背景图片吗?
根据 tag documentation,<h:commandButton image>
采用(相对)URL,而不是 JSF 资源名称。
通过 #{resource['library:name']}
使用 EL 中的资源映射器。它将 JSF 资源标识符转换为具体的 URL.
<h:commandButton ... image="#{resource['gfx/Logos/Logo.png']}" />
另请参阅:
- How to reference CSS / JS / image resource in Facelets template?
与具体问题无关,那个东西会生成一个 HTML <input type="image">
元素,它的目的是作为一个图像映射,可以捕获鼠标指针坐标点击。您似乎对可点击的图像更感兴趣。在那种情况下,最好使用 <h:commandLink><h:graphicImage>
.
<h:commandLink ...>
<h:graphicImage name="gfx/Logos/Logo.png" />
</h:commandLink>
另请参阅:
- Change the image of a JSF commandbutton with DHTML event onmouseover
我了解到 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 背景图片吗?
根据 tag documentation,<h:commandButton image>
采用(相对)URL,而不是 JSF 资源名称。
通过 #{resource['library:name']}
使用 EL 中的资源映射器。它将 JSF 资源标识符转换为具体的 URL.
<h:commandButton ... image="#{resource['gfx/Logos/Logo.png']}" />
另请参阅:
- How to reference CSS / JS / image resource in Facelets template?
与具体问题无关,那个东西会生成一个 HTML <input type="image">
元素,它的目的是作为一个图像映射,可以捕获鼠标指针坐标点击。您似乎对可点击的图像更感兴趣。在那种情况下,最好使用 <h:commandLink><h:graphicImage>
.
<h:commandLink ...>
<h:graphicImage name="gfx/Logos/Logo.png" />
</h:commandLink>
另请参阅:
- Change the image of a JSF commandbutton with DHTML event onmouseover