为什么事件监听器不被调用?
问题描述:
我使用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方法,但不起作用。 我哪里错了?
答
发现它! 它缺少MenuItem id属性。 我加了
mi.setId("myUniqueId");
它按预期工作。