Дерево с контекстным меню с использованием JSF 2.0 и Hibernate - PullRequest
0 голосов
/ 31 марта 2011

Мне нужно реализовать дерево контента с контекстным меню (добавить, удалить, редактировать) в JSF 2.0.Пожалуйста, предложите мне некоторые компоненты.Узел дерева должен быть подобным объекту (Data, ID).Когда я нажимаю на узел дерева, мне нужно получить идентификатор для beend-компонента.

Пример:

index.xhtml

Prime Tree

        <p:growl id="messages" showDetail="true" />


        <p:tree value="#{treeBean.root}" var="node" id="pTree"
                selectionMode="single" selection="#{treeBean.selectedNode}">

            <p:treeNode>
                <h:outputText value="#{node}" />
            </p:treeNode>
        </p:tree>
        <p:contextMenu for="pTree" id="cmenu">
            <p:menuitem value="Add topic as child" update="pTree, cmenu"
                        actionListener="#{treeBean.addChildNode}" />
             <p:menuitem value="Add topic Below" update="pTree, cmenu"
                        actionListener="#{treeBean.addTopicBelow}" />
             <p:menuitem value="Delete Topic" update="pTree, cmenu"
                        actionListener="#{treeBean.deleteNode}" />
        </p:contextMenu>

    </h:form>
</h:body>

TreeBean.java

/ * * Чтобы изменить этот шаблон, выберите Сервис |Шаблоны * и откройте шаблон в редакторе.* /

пакет com.prime.tree;

import java.io.Serializable;import javax.faces.application.FacesMessage;import javax.faces.bean.ManagedBean;import javax.faces.bean.SessionScoped;import javax.faces.context.FacesContext;import javax.faces.event.ActionEvent;import org.primefaces.model.DefaultTreeNode;import org.primefaces.model.TreeNode;

/ ** * * @author Veerendra * / @ManagedBean @SessionScoped открытый класс TreeBean реализует Serializable {

private TreeNode root;

private TreeNode selectedNode;

public TreeBean() {
    root = new DefaultTreeNode("Root", null);
    List rootNodes<Employee> = SearchDao.getRootNodes();

    Iterator it = rootNodes.iterator();
    while (it.hasNext()) {

        TreeNode node1 = new DefaultTreeNode(**it.next()**, root);
        **/* in place of it.next() I need to display empName. When I click on empName, I need to get the Id(Pkey). */**

    }

}

public TreeNode getRoot() {
    return root;
}

public TreeNode getSelectedNode() {
    return selectedNode;
}

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



public void addChildNode(ActionEvent actionEvent) {
    System.out.println("Selected Node: "+getSelectedNode().toString());
    TreeNode newNode = new DefaultTreeNode("Node New", getSelectedNode());
    getSelectedNode().setExpanded(true);
}
public void addTopicBelow(ActionEvent actionEvent){
    TreeNode newNode = new DefaultTreeNode("Node New", getSelectedNode().getParent());
}
public void deleteNode(ActionEvent actionEvent){
     System.out.println("Node to be deleted: "+getSelectedNode().toString());
     //getSelectedNode().
}

}

Employee.java

открытый класс Employee {

private String empID;
private String empName;

/**
 * @return the empName
 */
public String getEmpName() {
    return empName;
}

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

/**
 * @return the empID
 */
public String getEmpID() {
    return empID;
}

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

}

1 Ответ

1 голос
/ 31 марта 2011

Вы можете взглянуть на компонент Primefaces Tree в сочетании с ContextMenu .

Вы можете построить свое дерево в компоненте поддержки и получить выбранныйузел, как описано в примерах демонстрации Primefaces.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...