jsf - 如何从 Primefaces Breadcrumb 的 DefaultMenuModel 中删除 MenuItem

标签 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,具体方法是什么?

最佳答案

您可以通过 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);

关于jsf - 如何从 Primefaces Breadcrumb 的 DefaultMenuModel 中删除 MenuItem,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14641569/

相关文章:

ajax - 如何使用 AjaxBehaviorEvent 获取 selectedDate?

java - Primefaces commandButton 在 Carousel 中不起作用

java - 无法通过 EL 将参数传递给方法 - javax.el.MethodNotFoundException

jsf - 我什么时候应该使用 h :outputLink instead of h:commandLink?

java - 读取 <p :selectOneMenu/> in onchange callback 的客户端值

eclipse - 验证者ID未注册

jsf - java.lang.ClassCastException : org. apache.xml.dtm.ref.DTMManagerDefault 无法转换为 org.apache.xml.dtm.DTMManager

jsf - 将RICHFACES添加到现有的JSF2项目

jsf - 集成 Spring MVC 和 JSF 2.1

java - 为什么命令按钮操作监听器不起作用?