注意到从JSF 视图元数据揭秘:
由于这个标签是关于当前视图元数据的,它不参与 XHTML 模板(页面作者必须确保该元素不会出现在模板或包含的页面上;它可以在模板客户端中)并且它是
<f:view>
.
我有多个<f:viewParam>
,并且<f:event>
在许多 XHTML 页面中重复出现,而这些页面又是template.xhtml
. 每个都f:event
依赖于一个给定的托管 bean,其中每个 XHTML 页面的托管 bean 是不同的(但尊重一个公共接口,即,对于每个相关的托管 bean 存在相同的侦听器操作):
<f:view>
<f:metadata>
<!-- I want to share this across many XHTML parametrised by the bean -->
<f:viewParam name="id" value="#{particularBean.id}"/>
<f:event type="preRenderView" listener="#{particularBean.opCommon1}"/>
<f:event type="preRenderView" listener="#{particularBean.opCommon2}"/>
<!-- END SHARED PORTION -->
<f:event type="preRenderView" listener="#{particularBean.onlyForMe}"/>
</f:metadata>
</f:view>
<ui:composition template="/template.xhtml">
问:如何封装共享<f:viewParam>
和<f:event>
部分,以便它可以“包含”并作为公共策略片段处理,并为每个 XHTML 页面传入特定的托管 bean(满足公共接口)?