我尝试使用primefaces使用树节点,但我无法使用我的控制器设置节点
我写了这段代码
<p:tree value="#{myModel.root}" var="node"
selectionMode="checkbox"
selection="#{myModel.selectedNodes}"
style="width: 100%">
<p:treeNode>
<h:outputText value="#{node.description}" />
</p:treeNode>
</p:tree>
这是托管bean
@ManagedBean
@SessionScoped
public class TreeBean implements Serializable {
private TreeNode root;
private TreeNode selectedNode;
public TreeBean() {
root = new DefaultTreeNode("Root", null);
TreeNode node0 = new DefaultTreeNode("Node 0", root);
TreeNode node1 = new DefaultTreeNode("Node 1", root);
TreeNode node2 = new DefaultTreeNode("Node 2", root);
TreeNode node00 = new DefaultTreeNode("Node 0.0", node0);
TreeNode node01 = new DefaultTreeNode("Node 0.1", node0);
TreeNode node10 = new DefaultTreeNode("Node 1.0", node1);
TreeNode node11 = new DefaultTreeNode("Node 1.1", node1);
TreeNode node000 = new DefaultTreeNode("Node 0.0.0", node00);
TreeNode node001 = new DefaultTreeNode("Node 0.0.1", node00);
TreeNode node010 = new DefaultTreeNode("Node 0.1.0", node01);
TreeNode node100 = new DefaultTreeNode("Node 1.0.0", node10);
}
public TreeNode getRoot() {
return root;
}
public TreeNode getSelectedNode() {
selectedNodes=new TreeNode[allNodes.size()];
for (int i = 0; i < allNodes.size(); i++) {
selectedNodes[i]=allNodes.get(i);
if (i==0||i==100) {
selectedNodes[i].setSelected(true);
}else {
selectedNodes[i].setSelected(false);
}
}
return selectedNode;
}
public void setSelectedNode(TreeNode selectedNode) {
this.selectedNode = selectedNode;
}
}
当我点击树状页面中的按钮时,它可以工作,但我必须在打开之前设置信息
答案 0 :(得分:0)
您必须将selectedNode的数据类型从TreeNode类型的单个对象更改为TreeNode的数组容器。
更改
private TreeNode selectedNode;
到
private TreeNode[] selectedNodes;
因为你设置了selectionMode =“checkbox”,其中可以选择多行,并且这些行需要存储在一个数组中。