我在页面上显示图片时遇到问题:
<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>
答案 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" />