Отмечая, что из Демистификация метаданных представления JSF:
Поскольку этот тег относится к метаданным текущего представления, он не участвует в шаблонах XHTML (автор страницы должен убедиться, что элемент не отображается в шаблоне или включенной странице; он может быть в клиенте шаблона) и является прямым потомком
<f:view>
.
У меня есть несколько <f:viewParam>
и <f:event>
, которые повторяются на многих XHTML-страницах, которые, в свою очередь, являются клиентами template.xhtml
. Каждый f:event
зависит от данного управляемого компонента, причем управляемый компонент отличается для каждой XHTML-страницы (но учитывает общий интерфейс, т. е. одни и те же операции для слушателей существуют для каждого соответствующего управляемого компонента):
<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-страницы?