Here's some code which reproduces my problem:
test.zul
<?page title="test" contentType="text/html;charset=UTF-8"?>
<zk>
<window id="win" title="test" border="normal" width="200px" height="100px" context="contextmenu" apply="org.test.myapp.Test">
Right click here for context menu
<menupopup id="contextmenu" />
</window>
</zk>
org.test.myapp.Test.java
public class Test extends GenericAnnotatedComposer {
@Wire
private Window win;
@Wire
private Menupopup contextmenu;
public void onCreate()
{ Menuitem mi1 = new Menuitem("Submenu 1"); mi1.setId("sub1"); contextmenu.appendChild(mi1); Menuitem mi2 = new Menuitem("Submenu 2"); mi2.setId("sub2"); contextmenu.appendChild(mi2); Menuitem mi3 = new Menuitem("Submenu 3"); mi3.setId("sub3"); contextmenu.appendChild(mi3); List<Component> menuitems = Selectors.find(win, "menuitem"); System.out.println("Menuitem count: "+ menuitems.size()); for (Component comp : menuitems) Selectors.wireEventListeners(comp, this); } @Listen("onClick = menuitem")
public void menuitemClicked(Event event)
}
Output when I click Submenu 1: (OK)
Menuitem count: 3
menuitem clicked. id: sub 1
Output when I click Submenu 2: (Wrong - duplication)
Menuitem count: 3
menuitem clicked. id: sub 2
menuitem clicked. id: sub 2
Output when I click Submenu 3: (Wrong - duplication)
Menuitem count: 3
menuitem clicked. id: sub 3
menuitem clicked. id: sub 3
menuitem clicked. id: sub 3
For this reproduceable code I am extending GenericAnnotatedComposer but in reality I am extending GenericSpringComposer (hence the reason why I need to use Selectors directly). Also the menuitems are set dynamically so I need to use Selectors. Am I doing something wrong or is this a bug in Selectors?