【问题标题】:How to render images in JSF 2.0如何在 JSF 2.0 中渲染图像
【发布时间】: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 直接指向资源,速度更快。

在什么情况下使用第一种方法 - 指定(名称、库)或(值)属性?

【问题讨论】:

    标签: image jsf jsf-2


    【解决方案1】:

    对我来说,第二种方法 - 将服务器 URL 直接指向资源,速度更快。

    差异应该完全可以忽略不计。 “直接服务器 URL 到资源”方法也使用 servlet(由容器提供的 default servlet)。请出示您的基准测试结果。


    在什么情况下使用第一种方法 - 指定(名称、库)或(值)属性?

    它允许您从 JAR 文件中提供资源。它还允许您以更好的方式通过以下方式动态切换库:

    <h:graphicImage library="#{user.prefs.looknfeel}" name="next.gif"/>
    

    library 实际上应该指向包含所有 CSS/JS/图像的公共资源库,而不是特定的“图像”库。

    相关问题:

    【讨论】:

    • 在这种情况下如何为HTML标签img设置属性alt?例如&lt;h:graphicImage library="myPath" name="myImg" alt="myText"/&gt; 不起作用...
    • @Michael:每当您有新的和不相关的问题时,请按右上角的 按钮。
    猜你喜欢
    • 2013-06-02
    • 1970-01-01
    • 2012-04-01
    • 1970-01-01
    • 2011-12-12
    • 2012-01-01
    • 2023-03-25
    • 2011-08-22
    • 2013-05-06
    相关资源
    最近更新 更多