【问题标题】:How to build a dynamic menu如何构建动态菜单
【发布时间】:2013-10-29 13:06:37
【问题描述】:

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

【问题讨论】:

    标签: jsf primefaces


    【解决方案1】:

    每个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 从您的实体中获取 MenuItems。

    如果您的菜单具有 n 级 格式,它可能会成为一种方便的递归方法来生成 MenuModel,您必须在其中迭代您的 Items 以创建第一级菜单和然后递归每个父亲的孩子。

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

    【讨论】:

    • 以及如何设置url的action?我的菜单是这样的:&lt;p:menuitem value="Consultar" action="consultas" /&gt; 其中咨询是页面的名称。
    • 我认为您可以使用 item.setCommand("#{menuView.save}"); Looh 之类的内容添加它而不是 url 以获取更多信息:primefaces.org/showcase/ui/menu/menu.xhtml
    【解决方案2】:

    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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-01-18
      • 1970-01-01
      • 2013-03-12
      相关资源
      最近更新 更多