如何从资源中获取richfaces中的变量图像

时间:2013-09-16 12:07:38

标签: image jsf richfaces el

我在页面上显示图片时遇到问题:

<h:graphicImage value="resource:///image/actors/#{imageBean.source}" alt="pic" />

#{imageBean.source} =“image.jpg”的结果

结果:

  

[13:10:14.445] GET http:// localhost:7001 / webapp-core / faces / image.jpg   [HTTP / 1.1 404未找到578ms]

显然不起作用,但我不知道正确的方法是什么。

我尝试了很多变化,例如:

- <h:graphicImage value="#{resource['image/actors/imageBean.source']}" alt="pic" />
- <h:graphicImage value="resource:///#{imageBean.source}" alt="pic" />
- <h:graphicImage value="#{resource['image/akteurs/imageBean.source']}" alt="pic" />

我的主要问题是如何让#{imageBean}在资源上下文中工作。

正确的路径是:

  

[13:37:28.935] GET   http://localhost:7001/webapp-core/faces/javax.faces.resource/image/actors/image.jpg   [HTTP / 1.1 200 OK 31ms]

设置web.xml:

<context-param>
  <param-name>org.richfaces.resourceOptimization.enabled</param-name>
  <param-value>false</param-value>
</context-param>

1 个答案:

答案 0 :(得分:2)

resource:// URI在此上下文中无效。它有一个完全不同的目的。要在视图中引用JSF资源,您应该使用#{resource}


  

我的主要问题是如何让#{imageBean}在资源上下文中工作。

您可以通过使用JSTL <c:if>事先在EL中创建另一个字符串变量来内联它:

<c:set var="identifier" value="image/actors/#{imageBean.source}" />
<h:graphicImage value="#{resource[identifier]}" alt="pic" />

或者,如果您的环境支持EL 2.2,请使用String#concat()

<h:graphicImage value="#{resource['image/actors/'.concat(imageBean.source)]}" alt="pic" />