此示例包含列出角色和每个角色,我想显示与其关联的组和用户。
XHTML
<p:column headerText="Designation">
<h:outputText value="#{rl.designation}" />
</p:column>
<p:rowExpansion>
<p:treeTable value="#{roleMB.root}" var="document">
<p:column headerText="Designation">
<h:outputText value="#{document}" />
</p:column>
</p:treeTable>
</p:rowExpansion>
</p:dataTable>
CONTROLLER
用于显示每个角色的treetable的方法。
public void createRoot(){
List<AffectationRoleGroupe> groupesRole=new ArrayList<AffectationRoleGroupe>();
for(Role rl:roles){
root=new DefaultTreeNode("Root", null);
groupesRole=rl.getAffectationsRG();
for(AffectationRoleGroupe a:groupesRole){
System.out.println(rl.getDesignation());
System.out.println(a.getGroupe().getDesignation());
TreeNode node = new DefaultTreeNode( a.getGroupe().getDesignation(), root);
}
}
答案 0 :(得分:0)
首先,您缺少一个触发每个角色的列表组生成的rowToggle事件:
<p:ajax event="rowToggle" listener="#{managedBean.createRoot(role)}" update=":treeGroupe" />
<p:rowExpansion>
<p:treeTable id="treeGroupe" value="#{roleMB.root}" var="groupe">
<p:column headerText="Designation">
<h:outputText value="#{groupe.designation}" />
</p:column>
</p:treeTable>
</p:rowExpansion>
在你的方法中,你应该传递你正在扮演的角色,然后你必须用角色组来填充树的节点:
public void createRoot(Role role){
......
}
你可以看到如何摆弄treeTable:Input type=password, don't let browser remember the password