【发布时间】:2011-10-28 21:00:22
【问题描述】:
根据JSF 2.0规范,根据JSF生成HTML标签的“src”属性的方式,h:graphicImage的使用方式有3种:
<h:graphicImage value="#{resource['images:next.gif']}"/>
<h:graphicImage library="images" name="next.gif"/>
<h:graphicImage url="/resources/images/next.gif"/>
规范声明前两个应该呈现完全相同的标记。在我的 JSF 实现(MyFaces 2.0.2)中,这是生成的输出 HTML:
<img src="/AppName/faces/javax.faces.resource/next.gif?ln=images">
<img src="/AppName/faces/javax.faces.resource/next.gif?ln=images">
<img src="/AppName/resources/images/next.gif">
因此,如果我使用 (name, library) 或 (value) 属性,图像总是会通过 JSF 的 servlet 流式传输到客户端。如果我使用 (url) 属性,我可以直接链接到资源而无需 servlet 干预。
对我来说,第二种方法 - 将服务器 URL 直接指向资源,速度更快。
在什么情况下使用第一种方法 - 指定(名称、库)或(值)属性?
【问题讨论】: