2014-05-23 50 views
5

我正在使用primefaces並希望添加麪包屑菜單。 我應該如何動態加載我的麪包屑? 你有什麼建議或經驗?如何使primefaces麪包屑動態?

<p:breadCrumb> 
    <p:menuitem value="Categories" url="#" /> 
    <p:menuitem value="Sports" url="#" /> 
    <p:menuitem value="Basketball" url="#" /> 
    <p:menuitem value="NBA" url="#" /> 
    <p:menuitem value="Teams" url="#" /> 
    <p:menuitem value="L.A. Lakers" url="#" /> 
    <p:menuitem value="Roster" url="#" /> 
    <p:menuitem value="Kobe Bryant" url="#" /> 
</p:breadCrumb> 

Documentation to primefaces

回答

6

麪包屑作爲屬性的model。這一個用於動態創建菜單項像Primefaces Documentation這個例子菜單欄(當然,你必須適應這一個麪包屑):

public class MenuBean { 
    private MenuModel model; 

    public 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 
     DefaultSubMenu secondSubmenu = new DefaultSubMenu("Dynamic Actions"); 
     item = new DefaultMenuItem("Save"); 
     item.setIcon("ui-icon-disk"); 
     item.setCommand("#{menuBean.save}"); 
     item.setUpdate("messages"); 
     secondSubmenu.addElement(item); 
     item = new DefaultMenuItem("Delete"); 
     item.setIcon("ui-icon-close"); 
     item.setCommand("#{menuBean.delete}"); 
     item.setAjax(false); 
     secondSubmenu.addElement(item); 
     item = new DefaultMenuItem("Redirect"); 
     item.setIcon("ui-icon-search"); 
     item.setCommand("#{menuBean.redirect}"); 
     secondSubmenu.addElement(item); 
     model.addElement(secondSubmenu); 
    } 

    public MenuModel getModel() { 
     return model; 
    } 
} 

這一點,你剛纔打電話給你這樣的麪包屑內部模型後:動態麪包屑實施

model="#{menuBean.model}" 
0

一個很瘦的例子是:

<h:form>   
    <p:breadCrumb model="#{breadcrumbVO.menuModel}"> 
    </p:breadCrumb> 
</h:form>  

和背模型將如下所示:

import javax.faces.bean.ManagedBean; 
import javax.faces.bean.ViewScoped; 

import org.primefaces.model.menu.DefaultMenuItem; 
import org.primefaces.model.menu.DefaultMenuModel; 
import org.primefaces.model.menu.MenuModel; 

@ManagedBean 
@ViewScoped 
public class BreadcrumbVO {   

    private MenuModel menuModel; 

    public BreadcrumbVO() { 
     menuModel = new DefaultMenuModel(); 
     DefaultMenuItem menuItem = new DefaultMenuItem(); 
     menuItem.setValue("Test Value"); 
     //you can add multiple elements in a similar fashion. 
     //for simplicity I have added just one 
     menuModel.addElement(menuItem);   
    } 

    public MenuModel getMenuModel() { 
     return menuModel; 
    } 

    public void setMenuModel(MenuModel menuModel) { 
     this.menuModel = menuModel; 
    }  
}