嘿,我是新使用 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/