我的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
}
}
答案 0 :(得分:0)
此问题的原因是我的数据表绑定#{userTable}和我的托管bean UserTable将是相同的#{userTable}。
由于这个原因,我得到了
com.example.useroperations.UserTable无法强制转换为javax.faces.component.UIComponent
我刚刚将dataTable绑定更改为#{userDataTable}。之后它起作用了。 :)