加载页面的活动周期 加载页面的活动周期 加载页面的活动周期 加载页面的活动周期
ZK 加载器 (ZK loader) 加载并解释页面需要经历四个阶段:页面初始阶段,组 件
创建阶段,事件处理阶段及响应阶段 (the Page Initial Phase, the Componen t
Creation Phase, the Event Processing Phase, and the Rendering Phase) 。
如果你手动创建所有组件 , 则没有页面初始阶段。
1. 页面初始阶段
在这个阶段, ZK 处理处理指令,被称为初始化 ( init
处理指令,此阶段会被跳过。
对于每个 init 处理指令都有一个 class 属性,一个会被创建,然后它的 doInit 方法将会被 调用。当然的应用程序的需求。
<?init class="MyInit"?>
初始处理指令的另一种形式是使用 zscrtpt 属性指定
那么在页面初始阶段这个文件将会被解释。
<?init zscript="/my/init.zs"?>
请注意在这个阶段页面并没有被附加到桌面。
2.组件创建阶段
在这个阶段, ZK 加载器 (ZK loader) 解释一个 ZUML 页面,它创建并初始组件。
这需要以下的一些步骤:
1. 对于每个元素,它检查 if 和 unless 以确定元素是否有效。如果无效, 此
元素及其所有的子元素将 会被忽略。
2. 如果 forEach 被指定并伴随着一个项目的集合, ZK 将会为集合中的每个
项目重复以下步骤。
3. 基于元素名字,或使用 use 属性指定的类 ( 如果有的话 ) 创建一个组件。
4. 基于在 ZUML 页面属性指定的顺序依次初始成员。
5. 解释嵌套的元素 (nested elements) 并重复整个过程。
6. 调用 afterCompose 方法如果组件实现了
org.zkoss.zk.ui.ext.AfterCompose 接口。
7. 在所有的组件都被创建后, onCreate 事件被送到该组件,这样之后应用
程序可以初始划化一些元素的内容。注意, onCreate 事件首先为子组件
公布。
[ 注 ]: 开发人员可以通过监听 onCreate 事件或实现 AfterCompose 接口来完成 一
些特定应用程序的初始化。 AfterCompose 在组件创建阶段 (the Component
Creation Phase) 被调用,而 onCreate 事件是由事件监听器来处理的。一个事 件
监听器者可以自由地挂起或恢复执行 ( 例如创建对话框 (modal dialogs)), 而由
于 AfterCompose 不需要派生另一个线程, 所以它快一些。
3.事件处理阶段
在这个阶段, ZK 依次调用每个事件的监听器,这些事件已经为桌面排好队列。
一个独立线程开始调用监听,这样它可以在不影响其它事件处理的情况下被挂
起。在处理过程中,一个事件可能引发其它事件,事件监听和处理 (The Event
Listening and Processing)
4. 响应阶段
在所有的事件都被处理后, ZK 将这些组件组成一个规则的 HTML 页面并将这个 页
面送到浏览器。为了发送一个组件, redraw 会被调用。在这个方法中,一个组件的实现
(implementation) 并不会更改其它组件的内容。