无法创建我的类托管bean

时间:2014-01-25 12:04:57

标签: jsf jsf-2 liferay managed-bean

我的portlet中有一个userManagement.xhtml文件名作为UserManagement,我在不同的面板中包含了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但是我得到了

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

现在我通过创建对象并在UserManagement.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
   }
}

1 个答案:

答案 0 :(得分:0)

此问题的原因是我的数据表绑定#{userTable}和我的托管bean UserTable将是相同的#{userTable}。

由于这个原因,我得到了

com.example.useroperations.UserTable无法强制转换为javax.faces.component.UIComponent

我刚刚将dataTable绑定更改为#{userDataTable}。之后它起作用了。 :)

相关问题