Jsf Show p:动态显示面包屑

Jsf Show p:动态显示面包屑,jsf,primefaces,breadcrumbs,Jsf,Primefaces,Breadcrumbs,我需要在ManagedBean中动态创建primefaces面包屑菜单,我在StackOverflow和primefaces上找到了动态菜单创建的示例。下面是我创建动态菜单的代码 public class BreadCrumb { private MenuModel model; public BreadCrumb() { createMenu(); } @PostConstruct private void createMenu() { model = new

我需要在ManagedBean中动态创建primefaces面包屑菜单,我在StackOverflow和primefaces上找到了动态菜单创建的示例。下面是我创建动态菜单的代码

public class BreadCrumb  { 

private MenuModel model;

public BreadCrumb() {

    createMenu();

}

@PostConstruct
private void createMenu()
{

     model = new DefaultMenuModel();
      // First submenu
    DefaultSubMenu firstSubmenu = new DefaultSubMenu("First Sub Menu");

    DefaultMenuItem item = new DefaultMenuItem("Item1");
    item.setUrl("http://www.primefaces.org");
    item.setIcon("ui-icon-disk");
    firstSubmenu.addElement(item);
    model.addElement(firstSubmenu);


    // Second submenu
    DefaultSubMenu secondSubmenu = new DefaultSubMenu("Second Sub Menu");
    item = new DefaultMenuItem("Item2");
    item.setIcon("ui-icon-disk");
    item.setUrl("http://www.primefaces.org");
    secondSubmenu.addElement(item);
    //third sub menu
    item = new DefaultMenuItem("Item3");
    item.setIcon("ui-icon-close");
    secondSubmenu.addElement(item);
    //forth sub menu
    item = new DefaultMenuItem("Item4");
    item.setIcon("ui-icon-search");
    secondSubmenu.addElement(item);


    model.addElement(secondSubmenu);
}


public MenuModel getModel() {
    return model;
}
}   
我的xhtml是

 <h:form>

<p:breadCrumb model="#{breadCrumbBean.model}"> 

</p:breadCrumb>


</h:form>

我似乎找不到任何创建动态面包屑的解决方案,如有任何帮助,将不胜感激

将此添加到您的web.xml:

<context-param>
   <param-name>facelets.SKIP_COMMENTS</param-name>
   <param-value>true</param-value>
</context-param>

facelets.SKIP_注释
真的
,“当然,您必须将此项调整为面包屑…”

堆栈跟踪:

java.lang.ClassCastException: org.primefaces.model.menu.DefaultSubMenu cannot be cast to org.primefaces.model.menu.MenuItem`
告诉您不能在
中使用类
org.primefaces.model.menu.default子菜单

此外,面包屑是一维结构,因此不能嵌套元素

因此,解决方案是使用
org.primefaces.model.menu.MenuItem
的实现,比如
org.primefaces.model.menu.DefaultMenuItem
,而不是
org.primefaces.model.menu.DefaultSubMenu

例如:

model = new DefaultMenuModel();

DefaultMenuItem item = new DefaultMenuItem("Item1");
item.setIcon("ui-icon-disk");
item.setUrl("http://www.primefaces.org");
model.addElement(item);

item = new DefaultMenuItem("Item2");
item.setIcon("ui-icon-disk");
item.setUrl("http://www.primefaces.org");
model.addElement(item);

item = new DefaultMenuItem("Item3");
item.setIcon("ui-icon-close");
model.addElement(item);

item = new DefaultMenuItem("Item4");
item.setIcon("ui-icon-search");
model.addElement(item);
model = new DefaultMenuModel();

DefaultMenuItem item = new DefaultMenuItem("Item1");
item.setIcon("ui-icon-disk");
item.setUrl("http://www.primefaces.org");
model.addElement(item);

item = new DefaultMenuItem("Item2");
item.setIcon("ui-icon-disk");
item.setUrl("http://www.primefaces.org");
model.addElement(item);

item = new DefaultMenuItem("Item3");
item.setIcon("ui-icon-close");
model.addElement(item);

item = new DefaultMenuItem("Item4");
item.setIcon("ui-icon-search");
model.addElement(item);