我正在从数据库表生成菜单栏,我能够生成第一级子菜单但我无法获得子菜单(项目)。 我找不到在primefaces上生成childs的逻辑。 这是我的查询的sql结果。任何人都可以帮助获得解决方案吗?
这是我的第一代生成代码
//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无法正常工作我尝试了很多例子并且没有渲染?
答案 0 :(得分:1)
首先
以下是创建菜单和子菜单项的代码
MenuModel menuModel = new DefaultMenuModel();
表示parent_option_Id 1
DefaultSubMenu menu = new DefaultSubMenu(getParentName());
menu.setLabel("name");
对于parent_option_id 1
的每个子项DefaultMenuItem resources = new DefaultMenuItem(getSubItemName());
resources.setUrl("subItemUrl");
menu.addElement(resources);
在subItems列表的末尾(关闭for循环之后) menuModel.addElement(菜单);