Component是Wciket中所有component的最高级抽象。具有如下特性:
关于component id:所有的组建都需要有一个非空的Id,供getId()方法调用,在MarkupContainer 容器中,这样的ID需要具备唯一性,
在页面层次和全局的层面,ID没有要求唯一。
关于继承:一个组建通过调用getParent()方法可以得到他的父组建,如果一个组件是MarkupContainer的实例,他可以含有子组件。
通过这样的方式,在页面维护的组建链上,可以包含很多组建。
关于组建路径:在页面中(页面作为继承链的根),组建的路径由一些简单的点分隔级联路径构成。例如:“a.b.c”表示了a组建位于b组建中,
b组建位于c组建中。组建的路径可以通过调用getPath()得到,这样得到的路径是一个绝对路径,以page的id号开头。所有的页面在session中的
pagemap中有一个Id,所以在组建的绝对路径中会包含这么一个页面的id。如果要获得组建的相对路径可以调用getPageRelativePath()。
关于生命周期:组建由下面几个周期过程:
1、Construction:组建通过java 的new 关键字构建,如果组建是MarkupContainer的一个实例,通常还会调用add()方法,添加childcomponet
2、Request Handling:请求处理,wicket中通过wicketFilter处理用户的请求。wicket使用application,session,request,response
处理组建,更新组建model,返回页面。application,session,request,response这一系列对象,保存在RequestCycle中,
通过getRequest(), getResponse() and getSession()调用。
3、Listener Invocation:监听调用,如果组建上注册了监听器,在求情处理的过程中,监听器会被调用,监听器允许用户处理相应事件。
尽管wicket中可以指定任意的监听器,监听器可以通过继承监听器类,或者implements监听接口实现。但是这种方法不建议使用。
相反的,监听器是通过逻辑事件来路由的,通过从写监听器的方法,调用用户的代码。
4、onBeginRequest:The onBeginRequest() method is called.
5、Form Submit:如果组建是FormComponent,并且组建被提交,组建通过调用FormComponent.validate()来验证组建model的有效性。
6、Form Model Update:If a valid Form has been submitted and the Component is a FormComponent, the component's model is updated by a call to FormComponent.updateModel().
7、Rendering:组建通过调用render()方法,返回请求结果。
8、onEndRequest () - The onEndRequest() method is called.
关于组建model:组建主要的职责是,使用model(通过setDefaultModel(IModel model)设置,getDefaultModel()获取)在适当的页面标记语言中,呈现返回结构。
另外,表单组建知道基于用户的输入更新组建的model。在IModel 接口中,提供了更实际的两个方法,调用model数据,
getDefaultModelObject()和getDefaultModelObjectAsString()。
关于可见性:组建通过setVisible方法(值来源于方法isVisible)指定组建在返回中可见性。
关于Page :通过调用getPage方法可以获得组建所在的页面引用,如果组建没在一个页面中,抛出IllegalStateException。一个等效的方法findPage
,可以指定特定的环境,查找组建所在的页面,没有则返回null。
关于会话:组建所在的会话,通过getSession获得。
关于Locale:getLocal获得
关于String Resources:通过应用的Localizer,组建可以拥有字符资源。通过getString(String key) and getString(String key, IModel model)
在组建中能够方便的访问资源。
关于样式:getStyle获取组建的样式。
关于变化(Variation ):不清楚
关于属性修改(AttributeModifiers ):如果你需要在程序中维护与组建对应的标记,你可以添加AttributeModifiers来修改标记的属性。
关于Application, ApplicationSettings and ApplicationPages:
The getApplication() method provides convenient access to the Application for a Component via getSession().getApplication().
The getApplicationSettings() method is equivalent to getApplication().getSettings().
The getApplicationPages is equivalent to getApplication().getPages().
关Feedback Messages:在组建中提供了与feedBack相关的一些方法:debug(String), info(String), warn(String), error(java.io.Serializable) and fatal(String)
关于Versioning :通过setVersioned()方法指定组建知否需要版本控制。
关于ajax支持:Components can be re-rendered after the whole Page has been rendered at least once by calling doRender().