3

我想创建一个复合组件,它将一些常见的元数据添加到视图中,例如:

<viewController:metadata controller="orderController"/>

组件:

<composite:interface>
  <composite:attribute name="controller" />
</composite:interface>

<composite:implementation>

  <f:metadata>
    <f:viewParam name="id" value="#{cc.attrs.controller.id}" />
    <f:event type="preRenderView"
      listener="#{cc.attrs.controller.initConversation}" />
  </f:metadata>

</composite:implementation>

我做了类似的事情来为所有视图添加一个按钮栏,它工作正常,但似乎 f:metadata 不可能。

我是对的还是我的代码有问题?

谢谢

4

1 回答 1

4

这是不可能的。必须进入<f:metadata>与视图 ID 关联的视图。另请参阅标签文档(强调我的):

声明此视图的元数据方面。这必须是<f:view>. 此标记必须位于给定 viewId 的顶级 XHTML 文件中,或位于模板客户端中,但不能位于模板中。实现必须确保刻面的直接子代是 a UIPanel,即使刻面只有一个子代。实现必须将 的 id 设置为UIPanel符号UIViewRoot.METADATA_FACET_NAME常量的值。

于 2012-08-15T15:15:51.497 回答