来自Java API的ZK Fire事件

时间:2013-03-01 10:33:16

标签: zk

我在ZK中定义了一个自定义命令,想要通过单击菜单项来调用它。

我看到我们可以定义一个AuRequest对象,但找不到像使用zkau.send函数那样发送这个AuRequest的方法。

有可能吗?如果没有,是否可以在JavaScript函数中定义zkau.send并在MeunItem Click Event中调用它?

     public class MyCustomCommand extends Command
     {
        protected MyCustomCommand(final String id, final int flags)
        {
            super(id, flags);
        }

        @Override
        protected void process(final AuRequest request)
        {
            System.out.println("Menu Item Click");
        }

     }

注册命令:

<bean id="myCustomCommand" class="com.test.commands.MyCustomCommand">
    <constructor-arg value="onMenuEdit" />
    <constructor-arg><util:constant static-field="org.zkoss.zk.au.Command.IGNORE_OLD_EQUIV"/></constructor-arg>
</bean>

和MenuItem事件

        menuItem.addEventListener(Events.ON_CLICK, new EventListener()
        {
            @Override
            public void onEvent(final Event event) throws Exception
            {

                final Tree tree = (Tree) parent;
                final Treeitem treeitem = tree.getSelectedItem();

                final AuRequest auRequest = new AuRequest(treeitem.getDesktop(), treeitem.getUuid(), "onMenuEdit", new String[]{});

                //how to send the auRequest??
            }
        });

1 个答案:

答案 0 :(得分:2)

我不能像你在这里建议的那样评论CommandAuRequest对象的用法。我从来没有见过它们,也从未使用过它们。如果有办法使用它们来解决这个问题,希望你会得到答案。也就是说,还有其他方法可以实现您的目标。

如开发人员参考的Event Firing部分所述,您可以从静态Events对象中触发事件。

Events.postEvent("onMenuEdit", myTree, myDataEgTheTreeItem);

或..

Events.sendEvent("onMenuEdit", myTree, myDataEgTheTreeItem);

或..

Events.echoEvent("onMenuEdit", myTree, myDataEgTheTreeItem);

任何这些都可以使用.. {/ 3>在Composer中处理

@Listen("onMenuItem = #myTree")
public void onTreeMenuItemEvent(Event event) {
    // Handle event
}

希望有所帮助。