为f:metadata创建组合组件

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中不可能实现。我的代码有问题吗?
谢谢
1个回答

4
这是不可能的。 <f:metadata> 必须放在与视图ID相关联的视图中。请参阅标签文档(我强调):
声明此视图的元数据 facet。这必须是<f:view>的子级。 此标记必须位于给定viewId的顶级XHTML文件中,或位于模板客户端中,但不能位于模板中。实现必须确保facet的直接子项是UIPanel,即使facet只有一个子项。实现必须将UIPanel的ID设置为UIViewRoot.METADATA_FACET_NAME符号常量的值。

嗨@BalusC。 我也在寻找类似的东西。有没有其他方法来实现这种组件? - RicardoS

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接