【发布时间】:2013-10-29 13:06:37
【问题描述】:
嘿,我是使用 jsf 的新手,所以我想用从数据库加载的项目构建一个动态菜单,但我不确定我需要什么功能或如何为菜单构建支持 bean。我已经创建了数据库和三个表 Rol、User、Rol x User、Items。还有什么是项目表的好属性??。
【问题讨论】:
标签: jsf primefaces
嘿,我是使用 jsf 的新手,所以我想用从数据库加载的项目构建一个动态菜单,但我不确定我需要什么功能或如何为菜单构建支持 bean。我已经创建了数据库和三个表 Rol、User、Rol x User、Items。还有什么是项目表的好属性??。
【问题讨论】:
标签: jsf primefaces
每个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
【讨论】:
<p:menuitem value="Consultar" action="consultas" /> 其中咨询是页面的名称。
item.setCommand("#{menuView.save}"); Looh 之类的内容添加它而不是 url 以获取更多信息:primefaces.org/showcase/ui/menu/menu.xhtml
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}"/>
【讨论】: