获取素数树中节点的索引 [英] Get the Index of the Node in a Primefaces Tree

查看:27
本文介绍了获取素数树中节点的索引的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在使用具有以下结构的 Primefaces 树:

I am using a Primefaces Tree which has a following structure :

节点 1

节点 1.1

节点 1.2

节点 1.3

现在,我想在 Node 1.1 和 Node 1.2 之间添加一个节点.我可以通过使用add(int index, TreeNode element)"方法来做到这一点.但为此我必须知道 Node 1.1 的索引.

Now, I want to add a node in between Node 1.1 and Node 1.2. I can do that by using "add(int index, TreeNode element)" method. But for that I must know the index of Node 1.1.

有没有办法通过节点名称或其他方式获取节点的索引?

Is there any way to get the index of a Node by it's name or by any other means?

推荐答案

这是另一个示例,它提供了一种在特定节点下添加 now 节点的简单方法.

This is another example which present a easy way to add now node below specific node.

XHTML

<h:form>
    <p:tree value="#{treeBasicView.root}" 
            id="tree"
            var="node" 
            dynamic="true">
        <p:treeNode>
            <h:outputText value="#{node}" />
        </p:treeNode>
    </p:tree>

    <p:outputLabel value="add node : " />
    <p:inputText id="newNodeName" 
                 value="#{treeBasicView.newNodeName}"/>

    <p:outputLabel value="below : " />
    <p:inputText id="selectedNodeName" 
                 value="#{treeBasicView.selectedNodeName}"/>
    <p:commandButton value="add child" 
                     process="@this,newNodeName,selectedNodeName"
                     update="tree"
                     actionListener="#{treeBasicView.addNewNode}"/>
</h:form>

托管Bean

@ManagedBean(name="treeBasicView")
@ViewScoped
public class BasicView implements Serializable {

    private TreeNode root;
    private TreeNode selectedNode;
    private int position;
    private String selectedNodeName;
    private String newNodeName;

    public TreeNode getRoot() {
        return root;
    }

    public String getSelectedNodeName() {
        return selectedNodeName;
    }

    public void setSelectedNodeName(String selectedNodeName) {
        this.selectedNodeName = selectedNodeName;
    }

    public String getNewNodeName() {
        return newNodeName;
    }

    public void setNewNodeName(String newNodeName) {
        this.newNodeName = newNodeName;
    }

    @PostConstruct
    public void init() {
        root = new DefaultTreeNode("Root", null);
        TreeNode node0 = new DefaultTreeNode("Node 0", root);
        TreeNode node1 = new DefaultTreeNode("Node 1", 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);

        node1.getChildren().add(new DefaultTreeNode("Node 1.1"));
        node00.getChildren().add(new DefaultTreeNode("Node 0.0.0"));
        node00.getChildren().add(new DefaultTreeNode("Node 0.0.1"));
        node01.getChildren().add(new DefaultTreeNode("Node 0.1.0"));
        node10.getChildren().add(new DefaultTreeNode("Node 1.0.0"));
        root.getChildren().add(new DefaultTreeNode("Node 2"));
    }

    public void addNewNode(ActionEvent event) {
        findNode(root);
        selectedNode.getParent().getChildren().add(position, new DefaultTreeNode(newNodeName));
    }

    private void findNode(TreeNode node){
        int pos = 0;
        List<TreeNode> subChild = node.getChildren();
        for (TreeNode treeNode : subChild) {
            pos = pos + 1;
            if(treeNode.getData().equals(selectedNodeName)){
                position = pos;
                selectedNode = treeNode;
            }
            findNode(treeNode);
        }
    }
}

点击添加孩子后

这篇关于获取素数树中节点的索引的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆