我想创建一个复合组件,向视图中添加一些常见的元数据,例如:
<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。
我是对的还是我的代码有问题?
谢谢
最佳答案
这是不可能的。 <f:metadata>
必须进入与视图ID关联的视图中。另请参见tag documentation(重点是我的):
声明此视图的元数据构面。这必须是<f:view>
的子级。 此标记必须位于给定viewId的顶级XHTML文件中,或者位于模板客户端中,但不能位于模板中。实现必须确保该构面的直接子级是UIPanel
,即使该构面只有一个子级也是如此。实现必须将UIPanel
的id设置为UIViewRoot.METADATA_FACET_NAME
符号常量的值。