我正在使用Treetable组件来显示父对象和子对象。我可以使用this tutorial.
显示父内容在我的例子中,我使用两个不同的对象来显示TreeTable组件中的内容。这些对象如下。
- 大学明细 - 这是我的父对象。它包含(每个大学的ID和名称)以及儿童学院。
- 学院详情 - 这是我的孩子对象。它包含每个学院的(身份证和姓名)。
醇>
UniversityDetail Class
public class UniversityDetail implements Serializable {
/**
* serialVersionUID -
*/
private static final long serialVersionUID = 1L;
/**
* UniversityId -
*/
private Integer UniversityId;
/**
* UniversityName -
*/
private String UniversityName;
/**
* CollegeDetail -
*/
private List<CollegeDetail> CollegeDetail = new ArrayList<CollegeDetail>();
public Integer getUniversityId() {
return UniversityId;
}
public void setUniversityId(Integer UniversityId) {
this.UniversityId = UniversityId;
}
public String getUniversityName() {
return UniversityName;
}
public void setUniversityName(String UniversityName) {
this.UniversityName = UniversityName;
}
public List<CollegeDetail> getCollegeDetail() {
return CollegeDetail;
}
public void setCollegeDetail(
List<CollegeDetail> collegeDetail) {
this.CollegeDetail = collegeDetail;
}
}
学院详情
public class CollegeDetail implements Serializable{
/**
* CollegeId -
*/
private Integer CollegeId;
/**
* CollegeName -
*/
private String CollegeName;
public Integer getCollegeId() {
return CollegeId;
}
public void setCollegeId(Integer CollegeId) {
this.CollegeId = CollegeId;
}
public String getCollegeName() {
return CollegeName;
}
public void setCollegeName(String CollegeName) {
this.CollegeName = CollegeName;
}
}
如何使用treetable组件显示这些详细信息类?我不知道如何迭代子元素(学院细节)
我有以下xhtml代码来显示父级和子级。我可以渲染父细节。但我无法呈现子类详细信息。非常感谢任何帮助。
<p:treeTable value="#{ManagedBean.root}" var="object" id="multiSelect"
selection="#{ManagedBean.selectedNodes}" selectionMode="checkbox">
<f:facet name="header">
College Dropdown
</f:facet>
<p:column style="width:100px">
<f:facet name="header">
University Name
</f:facet>
<h:outputText value="#{object.universityName}" />
</p:column>
<p:column style="display:none">
<f:facet name="header">
University ID
</f:facet>
<h:outputText value="#{object.universityId}" />
</p:column>
</p:treeTable>
ManagedBean
RootTree = new CheckboxTreeNode("Root", null);
for(int i =0 ; i<CompanyDetail.size();i++) {
UniversityDetail universityDetail = UniversityDetail.get(i);
List<CollegeDetail> collegeDetail = universityDetail.getCollegeDetail();
TreeNode parent = new CheckboxTreeNode(universityDetail,RootTree);
for(int j=0; j<collegeDetail.size();j++) {
TreeNode child = new CheckboxTreeNode(collegeDetail.get(j).getCollegeName(),collegeDetail.get(j), parent);
}
答案 0 :(得分:1)
您的XHTML
页面与back bean不同。
但在你的情况下,你可以创建另一个只有那些需要显示的属性的类。并使用该类显示在XHTML
页面上。
让我们知道是否不起作用。
答案 1 :(得分:0)
解决方案:
ManagedBean树getter:
private TreeNode tree;
public TreeNode getTree() {
if (tree == null) {
tree = new CheckboxTreeNode("root", null);
for (UniversityDetail u : universityDetailList) {
TreeNode uNode = new CheckboxTreeNode("university" ,u ,tree);
for (CollegeDetail c : u.getCollegeDetail()) {
TreeNode cNode = new CheckboxTreeNode("collage" ,c ,uNode);
}
}
}
return tree;
}
<强> XHTML:强>
<p:treeTable value="#{ManagedBean.tree}" var="object" nodeVar="node" id="multiSelect"
selection="#{ManagedBean.selectedNodes}" selectionMode="checkbox">
<f:facet name="header">
College Dropdown
</f:facet>
<p:column>
<p:treeNode type="university" rendered="#{node.type == 'university'}">
<h:outputText value="#{object.universityName}" />
</p:treeNode>
<p:treeNode type="college" rendered="#{node.type == 'college'}">
<h:outputText value="#{object.collegeName}" />
</p:treeNode>
</p:column>
<p:column>
<p:treeNode type="university" rendered="#{node.type == 'university'}">
<h:outputText value="#{object.universityId}" />
</p:treeNode>
<p:treeNode type="college" rendered="#{node.type == 'college'}">
<h:outputText value="#{object.collegeId}" />
</p:treeNode>
</p:column>
</p:treeTable>
提示:使用带有节点类型的呈现属性:
rendered="#{node.type == 'university'}"