jsf - 如何构建动态菜单

标签 jsf primefaces

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

最佳答案

每个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

关于jsf - 如何构建动态菜单,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19659087/

相关文章:

css - 在 Primefaces Grid CSS 中支持偏移列 StyleClass?

callback - 如何使用 PrimeFaces 的 RequestContext 将 POJO 作为回调参数发送?

java - 浏览器错误 : PrimeFacesExt is not defined

java - 在 Glassfish 3 上部署 JSF 应用程序

java - 将参数传递给 ViewScoped Bean

java - 未定义 JSF-Html Body 标记

jsf - 如何创建 h :selectOneRadio options with textarea, 文本框和文件上传字段?

maven - 无法从jsf页面获取值

JSF FacesContext#addMessage 不显示

jsf - <p :dataTable><p:columns> 中带有 List<List> 的动态列