image - 如何在 JSF 2.0 中渲染图像

标签 image jsf jsf-2

根据 JSF 2.0 规范,根据 JSF 生成 HTML 标记的“src”属性的方式,可以通过三种方式使用 h:graphicImage:

<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 直接指向资源,速度更快。

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

最佳答案

For me, the second approach - direct server URL to resource, is faster.


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

In what cases the first approach - specifying (name, library) or (value) attributes, be used?


它允许您从 JAR 文件中提供资源。它还允许您以更好的方式以以下方式动态切换库:
<h:graphicImage library="#{user.prefs.looknfeel}" name="next.gif"/>
library实际上应该指向具有所有 CSS/JS/图像的公共(public)资源库,而不是特定的“图像”库。
相关问题:
  • How to reference JSF image resource as CSS background image url
  • Changing JSF prefix to suffix mapping forces me to reapply the mapping on CSS background images
  • 关于image - 如何在 JSF 2.0 中渲染图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7092395/

    相关文章:

    c++ - OpenCV 的 cvAcc() 有什么作用?

    image - 仅将图像调整为特定宽度(AppleScript 或 Automator)

    java - PdfBox PDF 到图像转换 linux(字符间距问题)

    javascript - 在 Javascript 中填充 2d 图像数组时出现问题

    jsf - 将 JSTL 与 Facelets 集成

    jsf - JSF ResourceBundle中的EL变量

    jsf - JSF 托管 Bean 和无状态 EJB 的最佳模式是什么

    css - 如何稳定头部

    ajax - 使用 jsf 2 呈现页面标题

    jsf - 在同一命名容器中重用 facelets 组合时避免重复 id