【发布时间】:2011-11-29 12:33:18
【问题描述】:
对于 JSF2,使用 <h:graphiImage> 与普通 <img> 相比有什么优势(在性能方面,例如解析/渲染时间、可能的 http 缓存,如果有的话?等等)?
【问题讨论】:
对于 JSF2,使用 <h:graphiImage> 与普通 <img> 相比有什么优势(在性能方面,例如解析/渲染时间、可能的 http 缓存,如果有的话?等等)?
【问题讨论】:
没有安全简单的方法可以为src 属性设置绝对路径。这很重要,因为您很可能会从位于不同目录的多个页面中引用相同的图像。您想要维护它们的相对位置的麻烦吗?当然,您可以使用<img src="#{resource['images:myImage.png']}"/> 来获取安全的绝对路径。使用<h:graphicImage name="myImage.png" library="images"/>不是更容易吗?
“安全”绝对路径是什么意思?
您可以将图像留在通常的资源文件夹之外,并在绝对路径中指定它们,例如:<img src="/myApp-web/faces/images/myImage.png"/>,这样就可以了。但是,当您想要部署您的应用程序时会发生什么?您是否希望您的 URL 类似于 http://www.mysite.com/faces/myPage.xhtml?当然不是。您想将上下文根设置为服务器根。但是您不希望为生产部署更改所有 img 标记的麻烦,也不希望涉及从应用程序范围的 bean 获取基本 URL 并希望您记得更改生产部署的属性的一些技巧.所以你最好至少使用<img src="#{resource['images:myImage.png']}"/>或更容易记住的<h:graphicImage name="myImage.png" library="images"/>。
【讨论】:
<img src="#{request.contextPath}/img/image.png"/>,既安全又简单。
<img> 元素上没有server-side attributes。
【讨论】:
rendered?这可以通过 ui:fragment 来实现。没有更特别的吗?例如,当您的所有图像都由单个 servlet 流式传输时,它是否会给您带来任何优势。
rendered 就是这样一个属性。我不确定你在寻找什么“特别”——这里没有魔法。