ManagedBean 继承另一个 MB。如何重用主要 class JSF 作为组件?
ManagedBean inherits another MB. How to reuse the main class JSF as a component?
我的问题有点复杂,但我会举个例子。
我已经有一个 user.xhtml 页面(和一个使用它的 MB),我在其中注册了一个用户
<p:outputLabel value="Name:" /> <h:outputText value="#{userMB.bean.name}" />
<p:outputLabel value="e-mail:" /> <h:outputText value="#{userMB.bean.email}" />
etc...
现在我创建了一个继承 UserMB
的 UserAdmMB
,其中包含其他字段。我想重用现有的 XHTML,比如使用 <ui:include>
:
<ui:include src="user.xhtml" />
<p:outputLabel value="Address:" />
<h:outputText value="#{userAdmMB.anotherbean.address}" />
但是第一个 XHTML 中已经包含 userMB
(将在另一个访问点中使用)。更好的方法是什么?
将 bean 重构为 <ui:include>
的 <ui:param>
。
新的包括:
<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>
我的问题有点复杂,但我会举个例子。
我已经有一个 user.xhtml 页面(和一个使用它的 MB),我在其中注册了一个用户
<p:outputLabel value="Name:" /> <h:outputText value="#{userMB.bean.name}" />
<p:outputLabel value="e-mail:" /> <h:outputText value="#{userMB.bean.email}" />
etc...
现在我创建了一个继承 UserMB
的 UserAdmMB
,其中包含其他字段。我想重用现有的 XHTML,比如使用 <ui:include>
:
<ui:include src="user.xhtml" />
<p:outputLabel value="Address:" />
<h:outputText value="#{userAdmMB.anotherbean.address}" />
但是第一个 XHTML 中已经包含 userMB
(将在另一个访问点中使用)。更好的方法是什么?
将 bean 重构为 <ui:include>
的 <ui:param>
。
新的包括:
<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>