JSF Primefaces数据库中的多级动态菜单
我正在从数据库表生成菜单栏,我能够生成第一级子菜单,但无法获取子菜单childsitems。 我找不到在素数面上生成child的逻辑。 这是我查询的sql结果。有人能帮我找到解决方案吗 这是我的第一代代码JSF Primefaces数据库中的多级动态菜单,jsf,jsf-2,primefaces,menu,Jsf,Jsf 2,Primefaces,Menu,我正在从数据库表生成菜单栏,我能够生成第一级子菜单,但无法获取子菜单childsitems。 我找不到在素数面上生成child的逻辑。 这是我查询的sql结果。有人能帮我找到解决方案吗 这是我的第一代代码 //get menu options from database ResultSet result = ps.executeQuery(); int parent=0; DefaultSubMenu firstSubmenu = null; while(r
//get menu options from database
ResultSet result = ps.executeQuery();
int parent=0;
DefaultSubMenu firstSubmenu = null;
while(result.next()){
int parent_id=result.getInt("parent_option_id");
int suboption_id=result.getInt("sub_option_id");
int subopt_nb=result.getInt("totalSubopt");
if (result.getInt("parent_option_id")==0)
{
firstSubmenu = new DefaultSubMenu(result.getString("name"));
DefaultMenuItem item = new DefaultMenuItem(result.getString("name"));
firstSubmenu.setStyleClass("parent"+suboption_id);
firstSubmenu.setId("parent"+Integer.toString(suboption_id));
item.setUrl(result.getString("url"));
item.setIcon("ui-icon-home");
firstSubmenu.addElement(item);
menu.addElement(firstSubmenu);
}
}
另一件让我不安的事情是,setId不起作用了。我尝试了很多例子,但它没有渲染???首先
编写一个db查询,返回父项的列表select*,其中父项的选项id不为空
迭代父项列表,并为每个父项获取子项列表,选择*where parent_option_id=?
下面是创建菜单和子菜单项的代码
MenuModel menuModel = new DefaultMenuModel();
对于父项\u选项\u Id 1
DefaultSubMenu menu = new DefaultSubMenu(getParentName());
menu.setLabel("name");
对于父项\u选项\u id 1的每个子项
DefaultMenuItem resources = new DefaultMenuItem(getSubItemName());
resources.setUrl("subItemUrl");
menu.addElement(resources);
在关闭for循环后的子项列表末尾
menuModel.addElementmenu 好的,这是2级菜单,但这里我有一个3级菜单,如果它有一个子菜单和一个项目,你知道如何创建一个默认子菜单的条件吗?如果没有,谢谢,我从你的逻辑开始,我已经做了,但是在我们的情况下,我们受到了级别数量的限制,如果有一天我们不得不添加一个新的级别,我们有义务为新查询添加一个新的while循环。学习递归编程。在这种情况下效果很好