Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/394.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 是否可以删除zkoss Events.echoovent?_Java_Zk - Fatal编程技术网

Java 是否可以删除zkoss Events.echoovent?

Java 是否可以删除zkoss Events.echoovent?,java,zk,Java,Zk,我正在努力做到以下几点: 发送长时间执行的请求(我在这里使用Events.echoEvent) 使用“取消”按钮显示模式对话框(等待…) 如果用户按“取消”,对话框将隐藏,不应执行事件方法。 如果用户不按下按钮并等待。调用事件方法并关闭等待对话框 我该怎么做呢?ZK通常在一个线程中完成服务器上单个请求的所有工作Events.echoEvent允许您通过完成请求,然后立即以全新的请求(和线程)回调服务器来绕过此问题。用户与客户机的交互触发了一个新的请求,因此这也将是一个新线程 因此,在上面的示例中

我正在努力做到以下几点:

  • 发送长时间执行的请求(我在这里使用
    Events.echoEvent

  • 使用“取消”按钮显示模式对话框(等待…)
  • 如果用户按“取消”,对话框将隐藏,不应执行事件方法。
  • 如果用户不按下按钮并等待。调用事件方法并关闭等待对话框

  • 我该怎么做呢?

    ZK通常在一个线程中完成服务器上单个请求的所有工作
    Events.echoEvent
    允许您通过完成请求,然后立即以全新的请求(和线程)回调服务器来绕过此问题。用户与客户机的交互触发了一个新的请求,因此这也将是一个新线程

    因此,在上面的示例中,您将使用三个线程:

  • 对于调用
    echoEvent
  • 对于由回声事件创建的新请求
  • 对于用户单击“取消”时创建的请求
  • 显然,当最后两个接到电话时,第一个问题已经过去很久了,但这是你需要考虑的问题,以解决你的问题

    你会发现关于StackOverflow的很多讨论,关于让两个线程交互,或者更具体地说,让一个线程中断另一个线程

    我将向您介绍一个公认的答案,即在线程上共享某种“停止标志”而不是直接调用
    interrupt

    在您的场景中,长时间运行的进程在执行其工作的同时定期检查停止标志(一个简单的
    布尔值
    )。当用户单击“取消”时,您只需将标志翻转到
    true

    即可尝试

  • 创建一个线程来执行上面提到的长操作 (这是一个独立线程,不是ZK请求线程)

  • 创建一个计时器,定期检查该线程的状态。 (这将创建一个javascript计时器,以便在客户端定期发送ajax请求)

  • 并通过ZK客户端编程定制忙掩码,添加取消按钮。 (单击按钮执行另一个ajax请求)

    请参阅stackoverflow上的类似文章:

  • 编辑:

    我的博客上有一些相关文章: