我在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??
}
});
答案 0 :(得分:2)
我不能像你在这里建议的那样评论Command
或AuRequest
对象的用法。我从来没有见过它们,也从未使用过它们。如果有办法使用它们来解决这个问题,希望你会得到答案。也就是说,还有其他方法可以实现您的目标。
如开发人员参考的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
}
希望有所帮助。