2014-01-25 16 views
0

我在portlet中有一個userManagement.xhtml文件名作爲UserManagement我已經包含在不同的面板不能讓我的班級管理的bean

3個XHTML文件

我userManagement.xhtmlpage基本上是這樣的

<h:form> 
    <p:panel rendered="#{userManagement.condition}"> 
     <ui:include src="userTable.xhtml"/> 
    </p:panel> 
    <p:panel rendered="#{userManagement.condition}"/> 
     <ui:include src="userDetails.xhtml"/> 
    </p:panel> 
    <p:panel rendered="#{userManagement.condition}"/> 
     <ui:include src="userActivity.xhtml"/> 
    </p:panel> 
</h:form> 

基於渲染條件,我用來向用戶顯示3個xhtml文件(面板)中的一個。

爲了管理這些,我有1個託管bean名稱爲UserManagement.java。其他3個xhtml文件還有3個文件。

我試圖讓UserTable.java,UserDetails.java和userActivity.java但我通過創建對象和UserManagement使用它越來越

com.example.useroperations.UserTable cannot be cast to javax.faces.component.UIComponent 

現在我用這個作爲一個正常的Java類。 java的。但是我想讓它成爲託管bean。

我的Java代碼是這樣的 UserManagement.java

@ManagedBean 
@ViewScoped 
class UsermanageMent{ 
private UserTable userTable; 

public void showUserTable(){ 
    this.userTable = new UserTable("some param"); 
    ... 
    ... 
} 

public void setUserTable(UserTable userTable){ 
    this.userTable = userTable 
} 

public getUserTable(){ 
    return this.userTable(); 
} 

} 

UserTable.java

@ManagedBean 
@ViewScoped 
public UserTable{ 
    ...... 
    ...... 

    public UserTable(String param){ 
     ...... 
     this.retrieveListOfUser(param); 

    } 
    public void retrieveListOfUser(String param){ 
     ...... 
     ...... 
     SomeOtherClass obj = new SomeOtherClass(); 
     obj.retrieve(); // This is for DB call 
    } 
} 
+0

你能發佈你的java代碼嗎? –

+0

@XtremeBiker我已經發布了我的java代碼 –

+0

'UserTable'並不打算成爲一個託管bean。這個類將是一個用戶列表的包裝器。託管的bean應該只包含它。所以避免'UserTable'是一個託管bean。除此之外,你從哪裏引用表?請記住,'ui:include'中包含的所有內容都將在'rendered'屬性之前評估。發生這種情況是因爲'ui:include'在視圖構建時工作,而'rendered'在視圖渲染時工作。所以,只要你繼續使用'ui:include',正確的方法就是'c:choose'。 –

回答

0

這個問題的原因是我的數據表綁定#{}用戶表和我的管理bean的用戶表這將相同#{userTable}。

由於這一點,我是越來越

com.example.useroperations.UserTable不能轉換到javax.faces.component.UIComponent

我只是改變了我的dataTable綁定,#{} userDataTable。之後,它的工作。 :)