2010-08-18 114 views
1

我使用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; 
    } 

的问题是,事件监听器“#{} beanmodel.clickMenuContx”不会被调用。 我也试过MenuItem的methodBinding和setActionListener方法,但不起作用。 我哪里错了?

回答

0

发现它! 它缺少MenuItem id属性。 我加了

mi.setId("myUniqueId"); 

它按预期工作。