【问题标题】:Advantage of <h:graphicImage> over <img><h:graphicImage> 优于 <img>
【发布时间】:2011-11-29 12:33:18
【问题描述】:

对于 JSF2,使用 &lt;h:graphiImage&gt; 与普通 &lt;img&gt; 相比有什么优势(在性能方面,例如解析/渲染时间、可能的 http 缓存,如果有的话?等等)?

【问题讨论】:

    标签: jsf-2 tags image


    【解决方案1】:

    没有安全简单的方法可以为src 属性设置绝对路径。这很重要,因为您很可能会从位于不同目录的多个页面中引用相同的图像。您想要维护它们的相对位置的麻烦吗?当然,您可以使用&lt;img src="#{resource['images:myImage.png']}"/&gt; 来获取安全的绝对路径。使用&lt;h:graphicImage name="myImage.png" library="images"/&gt;不是更容易吗?

    “安全”绝对路径是什么意思?

    您可以将图像留在通常的资源文件夹之外,并在绝对路径中指定它们,例如:&lt;img src="/myApp-web/faces/images/myImage.png"/&gt;,这样就可以了。但是,当您想要部署您的应用程序时会发生什么?您是否希望您的 URL 类似于 http://www.mysite.com/faces/myPage.xhtml?当然不是。您想将上下文根设置为服务器根。但是您不希望为生产部署更改所有 img 标记的麻烦,也不希望涉及从应用程序范围的 bean 获取基本 URL 并希望您记得更改生产部署的属性的一些技巧.所以你最好至少使用&lt;img src="#{resource['images:myImage.png']}"/&gt;或更容易记住的&lt;h:graphicImage name="myImage.png" library="images"/&gt;

    【讨论】:

    • 您可以随时将上下文根放在图像 src 之前:&lt;img src="#{request.contextPath}/img/image.png"/&gt;,既安全又简单。
    • 啊,是的,没想到,这很奇怪,因为我自己做过一次。我仍然认为使用没有 EL 的图像组件比使用 EL 的 img 标签更容易。
    【解决方案2】:

    &lt;img&gt; 元素上没有server-side attributes

    【讨论】:

    • 你的意思是rendered?这可以通过 ui:fragment 来实现。没有更特别的吗?例如,当您的所有图像都由单个 servlet 流式传输时,它是否会给您带来任何优势。
    • 是的,rendered 就是这样一个属性。我不确定你在寻找什么“特别”——这里没有魔法。
    猜你喜欢
    • 1970-01-01
    • 2014-09-02
    • 1970-01-01
    • 2015-07-23
    • 2013-01-02
    相关资源
    最近更新 更多