如何构建动态菜单

时间:2013-10-29 13:06:38

标签: jsf primefaces

嘿我新使用jsf所以我想构建一个动态菜单,其中包含从数据库加载的项目,但我不确定我需要什么功能或如何为菜单构建支持bean。我已经有数据库创建和三个表Rol,User,Rol x User,Items。还有什么是项目表的好属性??。

2 个答案:

答案 0 :(得分:3)

每个Rol应该有Items,因此您需要一个额外的表格ItemsXRol我会为Item选择此列:id, label, url, tooltip, father_item, level这样的话,当然你应该选择你的专栏来满足你的需求。

然后使用 Primefaces 创建动态获取数据库中的项目的菜单,您可以使用MenuModel对象。

//MenuBean
 model = new DefaultMenuModel();  

    //First submenu  
    DefaultSubMenu firstSubmenu = new DefaultSubMenu("Dynamic Submenu");  

    DefaultMenuItem item = new DefaultMenuItem("External");  
    item.setUrl("http://www.primefaces.org");  
    item.setIcon("ui-icon-home");  
    firstSubmenu.addElement(item);  

    model.addElement(firstSubmenu);  

    //Second submenu
    ...

在.xhtml文件中你输入的内容如下:

<p:menu model="#{menuBean.model}"/> 

但是要生成从数据库获取值的菜单,您可以使用DAO从您的实体获取MenuItem。

如果您的菜单具有 n级格式,则生成MenuModel的递归方法可能会变得非常方便,您必须在Items上迭代以创建第一级菜单,然后递归地显示每个父亲的孩子。

如果您想了解有关MenuModel的更多信息,请转到https://www.primefaces.org/showcase/ui/menu/menu.xhtml

答案 1 :(得分:1)

Primefaces为您提供了一种使用org.primefaces.model.menu.*类动态构建菜单的编程方法。在托管bean中使用MenuModel并在facelet页面上引用它。例如:

public class MenuBean {  

    private MenuModel model;  

    public MenuBean() {
        // Build your menu here
    }

    // Gets and sets
}

在你的脸上:

<p:menu model="#{menuBean.model}"/>

进一步详情: http://www.primefaces.org/showcase/ui/menu.jsf