简体   繁体   中英

How to send SN when tree node is selected?

I have this Primefaces tree:

JSF code

<h:form id="form">  

    <p:tree id="tree" value="#{TreeViewController.root}" var="node" dynamic="true" cache="true" animate="true"
            selectionMode="single"  selection="#{TreeViewController.selectedNode}" highlight="true">  
        <p:ajax event="select" listener="#{TreeViewController.onNodeSelect}" update=":form:outputComponent" />

        <p:treeNode>                            
            <h:outputText value="#{node}"/>  
        </p:treeNode> 
    </p:tree>

    <p:outputPanel id="outputComponent">
        <h:outputText value="#{TreeViewController.data}" />
    </p:outputPanel>

</h:form> 

Managed Bean

private TreeNode root; 

    private TreeNode selectedNode;  

    public TreeView() {  
        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 node3 = new DefaultTreeNode("Node 3", root);
        TreeNode node4 = new DefaultTreeNode("Node 4", root);  

        TreeNode node00 = new DefaultTreeNode("Node 0.0", node0);  
        TreeNode node01 = new DefaultTreeNode("Node 0.1", node0);
        TreeNode node02 = new DefaultTreeNode("Node 0.2", node0);  
        TreeNode node03 = new DefaultTreeNode("Node 0.3", node0);
        TreeNode node04 = new DefaultTreeNode("Node 0.4", node0);  
        TreeNode node05 = new DefaultTreeNode("Node 0.5", node0);
        TreeNode node06 = new DefaultTreeNode("Node 0.6", node0);
        TreeNode node07 = new DefaultTreeNode("Node 0.7", node0);  
        TreeNode node08 = new DefaultTreeNode("Node 0.8", node0);
        TreeNode node09 = new DefaultTreeNode("Node 0.9", 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 String data;

    public void onNodeSelect(NodeSelectEvent event) {
        String node = event.getTreeNode().getData().toString();

        data = node;
    }

    public String getData(){
        return data;
    }

    public TreeNode getSelectedNode() {  
        return selectedNode;  
    }  

    public void setSelectedNode(TreeNode selectedNode) {  
        this.selectedNode = selectedNode;  
    }  

I need to pass a value called serial number which will be used for SQL query later to get information for the selected node. The idea is to create tree with hidden serial number for each component into the node. Later this SN will be used to get data from database. How I can hide this SN for every component? Now I can get only the name of the tree node.

Althought i am quite late on replying it, but still it might help some one else as well. Here is what I have done,

I have made the following class

class CustomizedTree{
    private Integer id;
    private String name;

    public CustomizedTree(Integer id, String name){
        this.id = id;
        this.name = name;
    }

    /**
     * @return the id
     */
    public Integer getId() {
        return id;
    }

    /**
     * @param id the id to set
     */
    public void setId(Integer id) {
        this.id = id;
    }

    /**
     * @return the name
     */
    public String getName() {
        return name;
    }

    /**
     * @param name the name to set
     */
    public void setName(String name) {
        this.name = name;
    }
}

and while adding type for the tree node object,

CustomizedTree t = null;

        t = new CustomizedTree(device.getId(), device.getName());
TreeNode node0 = new TreeNodeImpl(t, root);

now this way, I can pass Id to the tree node as well.

and when a node is selected, I retrieve its id likewise.

CustomizedTree treeNode = (CustomizedTree)event.getTreeNode().getData();
    FacesMessage msg = new FacesMessage(FacesMessage.SEVERITY_INFO, "Selected",treeNode.getName());

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM