Events 为什么不调用事件侦听器?

Events 为什么不调用事件侦听器?,events,jsf,icefaces,menuitem,Events,Jsf,Icefaces,Menuitem,我使用ice:menuPopup在树节点上动态创建菜单。在jsf页面中,我有如下内容 <f:facet name="content"> <ice:panelGroup id="faccont" style="display: inline" menuPopup="qtaPupMenu"><ice:menuPopup imageDir="/images"> <ice:menuItems id="qtaPupMenu"

我使用ice:menuPopup在树节点上动态创建菜单。在jsf页面中,我有如下内容

  <f:facet name="content">
     <ice:panelGroup id="faccont" style="display: inline" menuPopup="qtaPupMenu"><ice:menuPopup imageDir="/images">
           <ice:menuItems  id="qtaPupMenu" value="#{item.userObject.menuModel}"/>
   . . .

. . .
菜单项由以下代码动态创建:

  public List<MenuItem> getMenuModel() {
    List<MenuItem> items = new LinkedList<MenuItem>();
    MenuItem mi = new MenuItem();
    mi.setValue("menu text");    
    ExpressionFactory expf = FacesContext.getCurrentInstance().getApplication().getExpressionFactory();
    MethodExpression mthd = expf
    .createMethodExpression(FacesContext.getCurrentInstance().getELContext(), "#{beanmodel.clickMenuContx}", void.class, new Class[] { ActionEvent.class });
    mi.setActionExpression(mex);           
    items.add(mi);
    return items;
  }
public List getMenuModel(){
列表项=新建LinkedList();
MenuItem mi=新的MenuItem();
mi.设置值(“菜单文本”);
ExpressionFactory expf=FacesContext.getCurrentInstance().getApplication().getExpressionFactory();
MethodExpression mthd=expf
.createMethodExpression(FacesContext.getCurrentInstance().getELContext(),“#{beanmodel.clickMenuContx}”,void.class,新类[]{ActionEvent.class});
mi.setActionExpression(mex);
项目.添加(mi);
退货项目;
}
问题是事件侦听器“#{beanmodel.clickMenuContx}”从未被调用。 我也尝试过MenuItem的methodBinding和setActionListener方法,但不起作用。 我哪里出错了?

找到了! 它缺少MenuItemid属性。 我补充说

它的工作原理与预期一致

   mi.setId("myUniqueId");