在WicketFilter初始化的时候,会调用webApplication.initializeComponents()完成组建监听的初始化工作。在wicket1.4.13版本中,实际上掉用了两个类的init方法:
1、org.apache.wicket.Initializer
2、org.apache.wicket.extensions.Initializer
这里以org.apache.wicket.Initializer为例介绍监听的初始化工作。
首先来看看init中的代码:
IBehaviorListener.INTERFACE.register();
IFormSubmitListener.INTERFACE.register();
ILinkListener.INTERFACE.register();
IOnChangeListener.INTERFACE.register();
IRedirectListener.INTERFACE.register();
IResourceListener.INTERFACE.register();
IActivePageBehaviorListener.INTERFACE.register();
以IBehaviorListener.INTERFACE.register();为例,其中INTERFACE维护了org.apache.wicket.RequestListenerInterface对象,register()方法将IBehaviorListener监听器注册到RequestListenerInterface的interfaces中。
监听原理说明:
每个监听接口中都维护了org.apache.wicket.RequestListenerInterface对象,这个对象被设计成静态最终常量,所以在类加载的时候,就被初始化了。API中关于这个类的解释是:Base class for request listener interfaces.这个类在wicket的监听机制中至关重要。为什么重要呢?第一、RequestListenerInterface中维护了一个Map<String, RequestListenerInterface> interfaces,在这个interfaces中保存了所有应用初始化过程中注册的监听器,在wicket的request中会用来完成组建注册监听工作;第二、
RequestListenerInterface提供了监听器的回调,这个地方其实是调用了组建上的方法(与监听器同名的方法)(这点很重要,监听程序我认为就是为组建服务的。);第三、RequestListenerInterface中提供了newRequestTarget方法,用来绑定页面,组建,监听。通过RequestListenerInterface,wicket在处理页面请求的时候,完成监听的操作。
下面提供了一些相关的类,供参考:
org.apache.wicket.Initializer :Initializer for components in wicket core library.
org.apache.wicket.IRequestListener :Base interface for all interfaces that listen for requests from the client browser.
org.apache.wicket.RequestListenerInterface :Base class for request listener interfaces.
org.apache.wicket.IRequestTarget :A request target is the base entity that is the subject of a request.
org.apache.wicket.request.target.component.IPageRequestTarget :Request target that denotes a page instance.
org.apache.wicket.request.target.component.PageRequestTarget
efault implementation of { IPageRequestTarget}. Target that denotes a page instance.
org.apache.wicket.request.target.component.listener.AbstractListenerInterfaceRequestTarget:
Target that denotes a page instance and a call to a component on that page using an listener interface method.
org.apache.wicket.request.target.component.listener.BehaviorRequestTarget :Target that denotes a page instance and a call to a component on that page using an listener
org.apache.wicket.RequestCycle :Represents the processing of a request.
分享到:
相关推荐
在近3年的wicket项目时间后的总结,包括有很多wicket的代码规范,及注意事项。
wicket国际化例子 含有wicket:message StringResourceModel 等读取properties资源文件的代码示例
wicket学习文档
从wicket官网中下载的wicket1.4.7中jar包,对于编写wicket相关的程序有所需要的朋友可以下载
wicket学习的简介,有大概得描述和一些简单的例子
初始化阶段 7.4。渲染阶段 7.5。删除阶段 7.6。独立舞台 7.7。摘要 8.页面版本控制和缓存 8.1。有状态页面与无状态页面 8.2。有状态页面 8.3。无状态页面 8.4。摘要 9.在请求处理的引擎盖下 9.1。类应用和请求处理 ...
Wicket has been around since 2004 and it has been an Apache project since 2007. During these years it has proved to be a solid and valuable solution for building enterprise web applications. Wicket ...
wicket7的使用教程,免去后端程序员编写javascript的烦恼,很实用的教程!
wicket 开发指南 比较全面的介绍wicket的使用
wicket1,4.17中除了jar包和example外的部分,分为3部分上传的原因是本人的上传容量限制为20M,该部分包括api帮助文档和源码等
wicket开发指南,wicket 新型的web开发框架,现以能无逢支持jsr168/286
Wicket开发指南 Wicket开发指南 Wicket开发指南
wicket例子和开发指南,指南为PDF文档,例子为wicket自带例子。
Wicket,有一个优秀的Web框架。和Struts和Webwork类似的Java WEB开发框架。优点在于对HTML和业务代码进行了有效的分离(流行的WEB框架大多如此)。基于规则的配置(有效减少了XML配置文件的使用,与Spring相比,...
Wicket 是什么?简单点说,它是一个基于Java 的Web 开发框架,与Struts,WebWork, Tapestry 相类似。其特点在于对Html 和代码进行了有效的分离(有利于程序员和美工的合 作),基于规则的配置(减少了XML 等配置...
wicket 基础知识培训,主要是讲解wicket入门知识,通过和struts比较来进行讲解。
wicket 6.x api.chm wicket帮助文档
这是继wicket的简单实例之后,关于tree的简单用法,初学者可以下载下来学习如何生成树,以及树的使用
wicket编译所需的maven库,搬运
Wicket 入门,以及Eclipse里建立project