【问题标题】:cannot set tree nodes in primefaces无法在 primefaces 中设置树节点
【发布时间】:2014-08-11 09:21:10
【问题描述】:

我尝试使用 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;  
}  
}

当我点击树形页面中的按钮时,它可以工作,但我必须在打开它之前设置信息

【问题讨论】:

    标签: jsf primefaces treenode


    【解决方案1】:

    您必须将 selectedNode 的数据类型从 TreeNode 类型的单个对象更改为 TreeNode(s) 的数组容器。

    改变

    private TreeNode selectedNode;
    

    private TreeNode[] selectedNodes;
    

    因为您设置了 selectionMode="checkbox" 可以选择多行,并且这些需要存储在数组中。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-03-28
      • 1970-01-01
      • 1970-01-01
      • 2021-07-14
      • 1970-01-01
      相关资源
      最近更新 更多