2013-10-29 59 views
2

嘿我新使用jsf,所以我想建立一個動態菜單,從數據庫加載的項目,但我不知道我需要什麼功能或如何構建菜單的支持豆。我已經有數據庫創建和三個表,用戶,Rol x用戶,項目。還有什麼將是物品表的良好屬性?如何建立一個動態菜單

回答

3

每個Rol應該有Items,所以你需要一個額外的表ItemsXRol我會選擇這列Itemid, label, url, tooltip, father_item, level類似的東西,當然你應該選擇你的列以滿足你的需求。

然後,使用Primefaces可以使用MenuModel對象來創建菜單,從db動態獲取項目。

//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級格式,它可能成爲方便的生成,你必須遍歷您Items遞歸創建第一級菜單,然後每一個父親的孩子的的MenuModel遞歸方法。

如果您想了解更多關於MenuModelhttps://www.primefaces.org/showcase/ui/menu/menu.xhtml

+0

以及如何設置** **行動的insted的URL的?我有這樣的菜單:''其中consultas是頁面的名稱。 –

+0

我想你可以添加它而不是像'item.setCommand(「#{menuView.save}」);''Looh在這裏獲取更多信息:http://primefaces.org/showcase/ui/menu/ menu.xhtml – jltorresm

+0

是的,它是如何完成的:) –

1

Primefaces爲您提供了一種使用org.primefaces.model.menu.*類來動態構建菜單的程序化方法。在託管bean中使用MenuModel,並在facelet頁面上引用它。例如:

public class MenuBean { 

    private MenuModel model; 

    public MenuBean() { 
     // Build your menu here 
    } 

    // Gets and sets 
} 

並在您的facelet:

<p:menu model="#{menuBean.model}"/> 

進一步瞭解詳細: http://www.primefaces.org/showcase/ui/menu.jsf