0

我目前在复合组件中使用类似的东西来创建对资源的 EL 引用:

<composite:implementation>

    <ui:param name="resourceName" value="images:#{cc.resourceName}" />

    <h:commandButton id="button" image="#{resource[resourceName]}" />

</composite:implementation>

如您所见,ui:param指的是getResourceName()在组件类中命名的方法。此方法确定要加载的资源。

我想有一个解决方案,整个ui:param事情都是不必要的,比如:

<composite:implementation>

    <h:commandButton id="button" image="#{cc.resource}" />

</composite:implementation>

目前我什至不知道这是否可能。

有任何想法吗?

谢谢,DS

4

1 回答 1

0

如果您不想使用 JSF 提供的资源 API,那么您可以将上下文相关 url 传递给图像,

例如:

如果这是您的自定义组件:

<util:mbt actionMethod="#{bean.show}" resourceName="#{bean.img}" />

将其更改为:

<util:mbt actionMethod="#{bean.show}" resource="#{bean.img}" />

其中 bean.getImg() 返回一个字符串"/resources/images/test.jpg"

或者,在添加组件时使用资源 API,如下所示:

<ui:param name="resourceName" value="images:#{bean.img}" />
<util:mbt actionMethod="#{bean.show}" resource="#{resource[resourceName]}" />

并像这样使用它:

<composite:implementation>

  .....

  <h:commandButton id="button" action="#{cc.attrs.actionMethod}" image="#{cc.attrs.resource}" />

  .....
</composite:implementation>

这个问题仍然在我的脑海中。“但为什么?”

于 2012-08-04T17:59:18.880 回答