组件的生命周期
本章将讲解页面加载和更新的生命周期
页面加载的生命周期
zk需要4个步骤来加载和翻译一张zuml页面:
1.页面的初始化
2.创建组件
3.事件的处理
4.rendering
下面分别详细的介绍上述4个阶段
页面初始化
在这个阶段,zk启动了init函数,如果没有定义这样的处理指示,则跳过。
对于每一个init处理指示都有一个class属性,一个指定的类被创建,然后它的doInit方法被调用。这个类将会进行什么操作呢,当然,这取决于你应用的要求。
<?init class="myinit"?>
另一种指定处理指示的形式是像下面这样定义zscript文件。然后,这个zscript文件将会在本阶段解释。
<?init zscript="/my/init.zs"?>
注意在这个阶段,页面还没有放到桌面。
组件创建阶段
在这个阶段,zk加载器解释zuml页面。它进行组件的创建和初始化。分下面几步进行。
1.对于每一个组件,检查它的if和unless属性来决定组件的有效性。如果是无效的,则它和它的子组件均被忽略。
2.在foreach属性中指定了items的集合,zk对每一个item重复下面的步骤。
3.基于元素的名字创建组件,或者使用use属性指定的类
4.按zuml页面上指定属性次序的初始化成员
5.解释嵌套的元素,重复整个过程
6.如果组件继承org.zkoss.zk.ext.AfterCompose接口,调用afterCompose函数。
7.在所有的子组件都创建后,onCreate事件被发送到这个组件,应用可以在之后初始化一些元素的内容。Notice that the oncreate events are posted for child components first.
Note: an developer can perform some application-specific initialization by listening to the oncreate event or implementing afterCompose. AfterCompose is called in the component create phase,while the oncreate event is handled by an event listener.
an event listener is free to suspend and resume the execution(such as creating modal dialogs),while AfterCompose is a bit faster since no need to fork another thread.
事件处理阶段
在这个阶段,zk为桌面的每个事件调用每个监听器。
一个独立的线程开始调用每一个监听器,所以在不影响其他事件处理的情况下可以被挂起。
在处理的过程中,一个监听器可能会触发其他的事件,参考event listening and processing章节。
the rendering phase
在所有的事件处理了之后,zk renders这些组件成为一个规则的html页面,然后将其发送到浏览器。
为了render组件,redraw方法被调用。在这个方法里面,一个组件的执行将不会改变组件的内容。
更新页面的生命周期
zk au engine 处理zk请求需要3个步骤:处理请求,处理事件,rendering
zk au engine 将zk请求传递到队列(一个桌面一个队列)。因此,对于一个桌面,请求是被顺序处理的。对于不同的桌面,请求是平行处理的。
请求处理阶段
根据请求,zk au engine可能更新被影响的组件的内容,尽管在客户端看来内容是一样的。
然后将相应的事件提交到队列。
事件处理阶段
这个过程和“组件创建阶段”相同。在一个独立的线程中顺序的对事件进行处理。
the rendering phase
在所有的事件被处理了以后,zk renders 影响的组件,创建相应的zk回应,然后将这些回应发送回客户端。然后client engine更新dom tree.
模型
组件即使在同一张页面里面也可能有多种不同的表现。这种观念叫做mold。程序员可以通过使用component接口的setMold方法动态的改变mold。所有的组件都有一个名为default的mold。一些组件可能支持多个mold,如tabbox同时支持default和accordion。
<tabbox><!-- if not specified, the default mold is assumed. -->
<tabs>
<tab label="Default"/>
</tabs>
<tabpanels>
<tabpanel>
<tabbox mold="accordion">
<tabs>
<tab label="First Accordion"/>
<tab label="Second Accordion"/>
</tabs>
<tabpanels>
<tabpanel>The first panel.</tabpanel>
<tabpanel>The second panel.</tabpanel>
</tabpanels>
</tabbox>
</tabpanel>
</tabpanels>
</tabbox>
组件的垃圾回收
Unlike many component-based GUI, ZK has no destroy or close method for components. Like W3C
DOM, a component is removed from the browser as soon as it is detached from the page. It is
shown as soon as it is attached to the page.
More precisely, once a component is detached from a page, it is no longer managed by ZK. If the
application doesn't have any reference to it. The memory occupied
相关推荐
这些操作通常在`doAfterCompose()`方法中调用,这是因为在ZK组件生命周期中,这个方法是在组件完成初始加载后执行,适合进行数据绑定和其他初始化工作。 **步骤一**:创建节点和子节点 ```java setModel(new ...
与ZK结合使用时,Spring可以管理ZK组件的生命周期,提供更强大的控制和灵活性。ZK-Spring桥接器jar是连接这两者的桥梁,它允许你在Spring容器中配置和管理ZK组件。 再者,Hibernate4是ORM(对象关系映射)工具,...
整合Spring后,开发者可以利用Spring的强大功能,如IoC容器来管理ZK组件的生命周期,实现更灵活的组件配置。同时,Spring的数据访问层支持与ZK的视图层结合,便于数据库操作和业务逻辑处理。此外,Spring MVC与ZK的...
- 对于自定义组件的研究,通常涉及组件的生命周期、事件处理以及模板定制,是提高应用可扩展性和复用性的关键。 6. **文档价值** - 这份文档不仅是学习ZK的宝贵资料,也是团队协作的重要工具,通过记录每个人的...
2. **组件系统**:详细解释ZK的组件模型,包括组件的生命周期、属性、事件处理机制。同时,会演示如何在页面布局中使用各种内置组件,并展示如何自定义新组件。 3. **数据绑定**:ZK的双向数据绑定功能使得UI和数据...
1. **ZK组件库**:ZK提供了一套丰富的组件库,包括按钮、表格、树形结构、图表等,这些组件都支持Ajax功能。开发者可以通过简单的配置,使组件在用户交互时自动发送Ajax请求,获取后台数据并更新界面。 2. **事件...
它还支持丰富桌面通用组件的动态更新,并且能够控制这些组件在Web应用生命周期内的更新。然而,ZK的使用也增加了Web应用开发的复杂性,因为开发者需要处理DOM操作和与服务器通信。 ZK的开发手册介绍了ZK的概念和...
Spring的核心是IoC(Inversion of Control)容器,它负责管理对象的生命周期和依赖关系。Spring还提供了数据访问集成、Web MVC框架、测试工具等模块,使得开发者能够构建松耦合、可测试的Java应用。 **Hibernate** ...
同时,手册还将介绍ZK的MVC模式和组件生命周期,帮助开发者更好地理解和控制应用的行为。 总之,《ZK中文手册v3.5.1》是ZK开发者不可或缺的学习资料,它不仅覆盖了ZK的基本功能,还探讨了与流行框架的集成策略,是...
JSF提供了一系列的UI组件和生命周期管理,与ZK不同的是,JSF主要依赖服务器端处理。 **ZK 3.5.1版本** "zk手册3.5.1.chm"文件可能是ZK框架3.5.1版本的官方文档,其中可能包含了详细的API参考、示例代码、用户指南...
每个组件都具有自己的生命周期和状态管理机制,这使得开发者可以更容易地管理和维护UI逻辑。例如,当用户与界面交互时,ZK会自动追踪这些变化,并仅更新发生变化的部分,而不是整个页面,从而提高了性能。 ### 总结...
- **桌面和组件的创建**:阐述了桌面在组件生命周期中的角色。 - **ZUML和XML命名空间**:介绍了ZUML标记语言的特性和XML命名空间的作用。 #### 四、组件生命周期 - **页面加载的生命周期**:描述了页面从加载到...
1. **ZK组件基础**:ZK提供了丰富的组件库,包括按钮、表格、树视图等,这些组件可以直接在XML布局文件中声明。通过学习书中的代码,你可以了解如何配置和定制这些组件,以及如何处理组件事件。 2. **事件处理**:...
#### 四、组件生命周期 ##### 页面加载生命周期 - 页面加载生命周期是指从用户请求页面到页面完全加载完毕的过程。 - 这个过程中涉及到了页面初始化、组件创建、事件处理和渲染等多个阶段。 ##### 页面更新生命...
- **ZK生命周期**:理解组件的创建、初始化、渲染、销毁等生命周期方法。 通过阅读ZK 3.5源代码,你可以深入了解其内部工作原理,学习如何优化组件性能,以及如何自定义组件和扩展功能。这对于开发高效、响应式的...
Spring的IoC(Inversion of Control)容器负责管理对象的生命周期和依赖关系,使代码更加松散耦合。此外,Spring MVC作为Spring的一部分,是构建Web应用的常用方式,它将请求处理、视图解析和业务逻辑分离,增强了...
2. **ZooKeeper架构**:讲解ZooKeeper的节点结构、角色(如follower、leader、observer)以及数据模型,包括znode的概念、类型和生命周期。 3. **API及命令**:列出ZooKeeper提供的客户端API,包括Java API和命令行...
1. **ZK框架基础**:介绍了ZK框架的基本概念,包括其核心组件、事件模型、生命周期管理以及与后端数据的交互机制。 2. **MXML语法**:详细讲解了MXML的语法结构,如何声明组件、设置属性、绑定数据以及编写事件处理...