?
默认情况下,ZK的过程中一个独立的线程的事件称为事件处理线程。因此,开发人员可以暂停,恢复在任何时间执行,没有阻止发回的响应到浏览器的servlet线程。但是异常情况下的很多个servlet线程被挂起的时候,将严重消耗我们服务器的cup内存,所以zk提供了个一个可以禁用事件处理线程的使用,换句话说,你可以强制ZK的处理像其他传统的Servlet线程框架的所有事件。当然,如果Servlet的线程正在执行,你就不能暂停。?
要禁用的事件处理线程使用,您必须指定以下内容 WEB-INF/zk.xml.?
这里是优点和有关使用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?}?}?}?);?
要禁用的事件处理线程使用,您必须指定以下内容 WEB-INF/zk.xml.?
<system-config>? ? <disable-event-thread>true</disable-event-thread>?
? ? </system-config>
这里是优点和有关使用Servlet的线程来处理事件的局限性?
? 使用Servlet的线程 使用事件处理线程 Integration 减集成问题。多容器承担的HTTP请求是在servlet线程处理。 您可能需要执行 EventThreadInit和/或 EventThreadCleanup解决一体化问题。ZK的和社会继续提供多功能一体化的实现来解决问题。 SuspendResume 没办法暂停执行的事件监听器。举例来说,你不能创建一个模式窗口。? 没有限制的。?
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?}?}?}?);?
?
1 楼
徜徉の小溪
2010-06-22
<div class="quote_title">tytyy</div>
2 楼
IcedCoffee
2010-09-14
改成<disable-event-thread>false</disable-event-thread> 之后
window.domodal出错...
window.domodal出错...
3 楼
徜徉の小溪
2010-09-15
IcedCoffee 写道
改成<disable-event-thread>false</disable-event-thread> 之后
window.domodal出错...
window.domodal出错...
什么错误??
4 楼
IcedCoffee
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();
Window win = (Window) Executions.createComponents("login_window.zul", login, null);
win.doModal();
5 楼
徜徉の小溪
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();
Window win = (Window) Executions.createComponents("login_window.zul", login, null);
win.doModal();
你肯定是在线程中调用了doModal()方法, 建议你放到onCreate()放法中 调用,页面初始化
然后创建组件 然后才是事件处理阶段 你现在直接在创建阶段就调用方法了