如何从Primefaces Breadcrumb的DefaultMenuModel中删除MenuItem

时间:2013-02-01 07:26:57

标签: jsf jsf-2 primefaces

您好我正在以编程方式构建DefaultMenuModel,该组件正在使用它,如下所示

`<p:breadCrumb id="pbreadcrumb" model="#{portalNavigator.model}"/>`

这是PortalNavigator Bean的代码,它将MenuItem添加到DefaultMenuModel类型的对象模型中。

DefaultMenuModel model=new DefaultMenuModel();    
MenuItem item=new MenuItem();  
item.setId("home");  
item.setUrl("/getPortal");  
item.setValue("Home");  
model.addMenuItem(item);

我的问题是如何从DefaultMenuModel中删除MenuItem,这是做什么的?

1 个答案:

答案 0 :(得分:2)

您可以在DefaultMenuModel#getContents()之前获取所有内容,然后返回List<UIComponent>,您可以将其投放回MenuItem。在Iterator中循环遍历它们。找到要删除的项目后,请使用Iterator#remove()方法。

Iterator<UIComponent> iterator = model.getContents().iterator();

while (iterator.hasNext()) {
    MenuItem item = (MenuItem) iterator.next();

    if (needsRemoval(item)) {
        iterator.remove();
    }
}

或者,如果您事先已经知道了索引,那么您也可以这样做:

model.getContents().remove(index);