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>