ManagedBean наследует другой МБ. Как повторно использовать основной класс JSF в качестве компонента?

Моя проблема немного сложна, но я приведу пример.

У меня уже есть страница user.xhtml (и МБ, которая ее использует), где я регистрирую пользователя

<p:outputLabel value="Name:" /> <h:outputText value="#{userMB.bean.name}" />
<p:outputLabel value="e-mail:" /> <h:outputText value="#{userMB.bean.email}" />
etc...

Теперь я создаю UserAdmMB что наследует UserMBс другими полями. Я хочу использовать существующий XHTML, например, используя <ui:include>:

<ui:include src="user.xhtml" />
<p:outputLabel value="Address:" />
<h:outputText value="#{userAdmMB.anotherbean.address}" />

Но первый XHTML уже имеет userMB в нем (для использования в другой точке доступа). Как лучше это сделать?

1 ответ

Решение

Рефакторинг боба как <ui:param> из <ui:include>,

Новое включает в себя:

<p:outputLabel value="Name:" /> <h:outputText value="#{user.name}" />
<p:outputLabel value="Email:" /> <h:outputText value="#{user.email}" />
...

Клиенты:

<ui:include src="user.xhtml">
    <ui:param name="user" value="#{someBean.user}" />
</ui:include>
<ui:include src="user.xhtml">
    <ui:param name="user" value="#{someAdminBean.user}" />
</ui:include>
Другие вопросы по тегам