浏览 5382 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (7) :: 隐藏帖 (0)
|
||||||||||
---|---|---|---|---|---|---|---|---|---|---|
作者 | 正文 | |||||||||
发表时间:2010-06-22
默认情况下,ZK的过程中一个独立的线程的事件称为事件处理线程。因此,开发人员可以暂停,恢复在任何时间执行,没有阻止发回的响应到浏览器的servlet线程。但是异常情况下的很多个servlet线程被挂起的时候,将严重消耗我们服务器的cup内存,所以zk提供了个一个可以禁用事件处理线程的使用,换句话说,你可以强制ZK的处理像其他传统的Servlet线程框架的所有事件。当然,如果Servlet的线程正在执行,你就不能暂停。
要禁用的事件处理线程使用,您必须指定以下内容 WEB-INF/zk.xml. <system-config> <disable-event-thread>true</disable-event-thread> 这里是优点和有关使用Servlet的线程来处理事件的局限性
zk5.0.2与zk3.6.4中事件处理线程配置区别 在zk5以前的版本中,以下配置默认为false,而在zk5以后默认为true(zk.xml文件中) 这两种的区别: 等于false时,启用事件处理线程,等于true时禁用事件处理线程 启用时,zk创建本地事件处理线程,处理弹出模式窗口,当弹出窗口时,等待用户操作,代码停止执行, 用户操作完毕后,继续执行代码 禁用时,zk弹出模式窗口使用servlet线程统一处理,代码执行完毕后,弹出窗口, if (Messagebox.show("Delete?", "Prompt", Messagebox.YES|Messagebox.NO, Messagebox.QUESTION) == Messagebox.YES) {this_never_executes(); } this_never_executes();//事件处理线程被启用时方法不会被执行. MessageBox.show(.....);//注册一个事件监听器,同样能处理这样的问题. Messagebox.show("Delete?", "Prompt", Messagebox.YES|Messagebox.NO, Messagebox.QUESTION, new EventListener() { public voidonEvent(Event evt) { switch (((Integer)evt.getData()).intValue()) { case Messagebox.YES: doYes(); break; //the Yes button is pressed case Messagebox.NO: doNo(); break; //the No button is pressed } } } );
声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
||||||||||
返回顶楼 | ||||||||||
发表时间:2010-09-14
改成<disable-event-thread>false</disable-event-thread> 之后
window.domodal出错... |
||||||||||
返回顶楼 | ||||||||||
发表时间:2010-09-15
IcedCoffee 写道 改成<disable-event-thread>false</disable-event-thread> 之后
window.domodal出错... 什么错误?? |
||||||||||
返回顶楼 | ||||||||||
发表时间:2010-09-20
org.zkoss.zk.ui.SuspendNotAllowedException: doModal must be called in an event listener
Window win = (Window) Executions.createComponents("login_window.zul", login, null); win.doModal(); |
||||||||||
返回顶楼 | ||||||||||
发表时间:2010-09-20
IcedCoffee 写道 org.zkoss.zk.ui.SuspendNotAllowedException: doModal must be called in an event listener
Window win = (Window) Executions.createComponents("login_window.zul", login, null); win.doModal(); 你肯定是在线程中调用了doModal()方法, 建议你放到onCreate()放法中 调用,页面初始化 然后创建组件 然后才是事件处理阶段 你现在直接在创建阶段就调用方法了 |
||||||||||
返回顶楼 | ||||||||||