2

我正在使用 Treetable 组件来显示父对象和子对象。我可以使用本教程显示父内容。

在我的例子中,我使用两个不同的对象来显示 TreeTable 组件中的内容。那些对象正在跟随。

  1. 大学详细信息- 这是我的父对象。它包含(每所大学的 ID 和名称)以及子学院。
  2. 学院细节- 这是我的孩子对象。它包含每个学院的(ID 和名称)。

UniversityDetail类

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>

托管豆

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);                  
   }
4

2 回答 2

1

您的XHTML页面与回豆不同。但是在您的情况下,您可以创建另一个仅具有需要显示的属性的类。并使用该类显示在XHTML页面上。让我们知道是否不起作用。

于 2014-04-28T12:39:03.010 回答
0

解决方案:

ManagedBean 树获取器:

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'}"
于 2016-11-04T12:58:34.320 回答