2015-01-09 23 views
1

我的問題有點複雜,但我會舉一個例子。ManagedBean繼承另一個MB。如何重用主類JSF作爲組件?

我已經有一個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... 

現在我創建一個UserAdmMB繼承UserMB,與其他領域。我想重新使用存在的XHTML,喜歡用<ui:include>

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

但第一XHTML中已經有userMB(到另一個接入點使用)。如何更好地做到這一點?

+0

請退後一步,從頭開始一遍重新設計。 – Tiny 2015-01-10 09:01:45

+0

@Tiny:除了bean名稱中的尷尬「MB」,這似乎並不合理? – BalusC 2015-01-11 23:42:28

回答

1

重構bean爲<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>