Java ZK消息框确认

Java ZK消息框确认,java,zk,Java,Zk,我正在使用ZK,发现了一些奇怪的行为。守则: @Listen("onClick = button#load") public void load() { int result = Messagebox.show("Are you sure to execute Load?", "Execute?", Messagebox.YES | Messagebox.NO, Messagebox.QUESTION); log.debug("Result: {}", r

我正在使用ZK,发现了一些奇怪的行为。守则:

@Listen("onClick = button#load")
public void load() {
    int result = Messagebox.show("Are you sure to execute Load?", "Execute?",
            Messagebox.YES | Messagebox.NO, Messagebox.QUESTION);
    log.debug("Result: {}", result);
    if (result == Messagebox.YES) {
        (new Thread(new Job("Load"))).start();
        message.setValue("Job " + "Load " + " is Executed at " + new Date());

        log.info("Load Called");
    } else {
        log.debug("Load Not Called");
    }
}
单击,将返回1作为整数。日志:

 02-Oct-2016 23:59:31.725 FINE [http-nio-8080-exec-1] com.Controller.load Result: 1
 02-Oct-2016 23:59:31.726 FINE [http-nio-8080-exec-1] com.Controller.load Load Not Called
 02-Oct-2016 23:59:39.541 FINE [http-nio-8080-exec-6] com.Controller.load Result: 1
 02-Oct-2016 23:59:39.542 FINE [http-nio-8080-exec-6] com.Controller.load Load Not Called

如何使其正确?

您使用的是哪个版本的ZK

javadoc说:

@返回被按下的按钮(其中一个{@link#OK},{@link#CANCEL}, {@link#YES}、{@link#NO}、{@link#ABORT}、{@link#RETRY}和{@link#IGNORE})

注意:如果事件处理线程被禁用,它将始终返回 {@link#OK}

但是,如果您检查关于事件处理线程的

[因为ZK 7.0.0不推荐根据Java Servlet规范启用事件线程,这可能会禁止创建新线程]

因此,您应该通知ZK更新其javadoc,就像您正在使用ZK7或8一样。该方法将始终立即返回1

要回答您的问题,如果您想根据单击的按钮调用特定操作:

@Listen("onClick = button#load")
public void load() {
    Messagebox.show("Are you sure to execute Load?", "Execute?", Messagebox.YES | Messagebox.NO, 
        Messagebox.QUESTION, new EventListener<Event>() {
            @Override
            public void onEvent(final Event evt) throws InterruptedException {
                if (Messagebox.ON_YES.equals(evt.getName())) {
                    // Code if yes clicked
                } else {
                    // Code if no clicked
                }
            }
        }
    );
}
@Listen(“onClick=按钮#加载”)
公共空荷载(){
Messagebox.show(“您确定要执行加载吗?”,“执行吗?”,Messagebox.YES | Messagebox.NO,
Messagebox.QUESTION,新的EventListener(){
@凌驾
public void onEvent(最终事件evt)抛出InterruptedException{
if(Messagebox.ON_YES.equals(evt.getName())){
//单击“是”时编码
}否则{
//如果没有单击,则编码
}
}
}
);
}

是的,我已修改为使用事件侦听器。也许我读了一份旧文件。