Tapestry笔记(三)
隐式调用组件:
<input type=”text” jwcid=”@TextField” value=”ognl:username” size=””/>
显示调用组件:
<input type=”text” jwcid=”username” size=” 20” />
<component id=”username” type=”TextField”>
<bingding name=”value” value=”username”/>
</component>
Tapestry启动后,扫描HTML模版,如果jwcid标签属性的值带有@则表示隐式调用,反之则显示调用组件。可以通过ID@组件来为隐式调用自定义一个组件ID,否则则由Tapestry框架自动分配ID。
Tapestry框架在HTML模版中发现jwcid标签属性的时候,它会根据其声明的组件去调用该组件的HTML模版、组件规范和组件类。
1.页面属性
在页面规范中定义页面属性就相当于在页面类中定义成员变量。在页面规范中声明的属性称为页面属性,在组件规范中声明的属性称组件属性。
<property name=”basin”/>页面属性
要定义对应于页面属性的JavaBean抽象(getter/setter)方法:public abstract String getbasin();
在页面规范中声明的属性并不需要类型,其回根据我们定义的JavaBean抽象getter/setter方法类型来决定属性值。当然针对对应的属性值操作需求来定义getter或setter方法。
Tapestry框架在页面表现之前和之后两次对页面属性进行初始化。
<property name=”basin” initial-value=”literal:ME”>
等同于
Private String basin;
Protected void initialize()
{
This.basin=”ME”;
}
Public String getbasin()
{
Return basin;
}
2.监听方法
Tapestry属于事件触发机制。
监听方法返回类型:
Void:监听方法跳转到当前页面
String:监听方法根据返回的页面名称来激活页面并表现响应,NULL跳转到当前页。
IPage:监听方法根据返回的页面实例来激活页面对象。页面对象可以通过cycle来获取,也可以通过页面属性注入页面实例来获得,返回NULL则跳转到当前页。
ILink:监听方法根据返回的实现ILink接口的对象对客户端URL进行重定向。
监听方法的参数:
<component id=”name” type=”DirectLink”>
<binding name=”listener” value=”listener:fun”/>
<binding name=”parameters” value=”{id,name}”>
</component>
取出DirectLink组件的parameters参数:
以IRequestCycle对象做为监听方法的参数,然后通过getListenerParameters()方法来获取一个包含数据的数组,再从中提取组件parameters参数绑定值。
Public IPage fun(IRequestCycle cycle)
{
Object[] parameters= cycle.getListenerParameters();
Integer nu=(Integer)parameters[0];
String name=(String)parameters[1];
}
或者
Public IPage fun(Integer nu,String name)
{
}
3.Visit对象和Global对象
Visit对象:
Visit对象是一个Tapestry应用程序的对象容器,用来存储应用程序逻辑和数据,这个对象能被应用程序中所有页面和组件共享。实际上,Visit对象最终作为一个HttpSession的属性被存储。
Visit对象在Tapestry框架启动时通过读取应用程序规范文件,将Visit对象的配置信息存入Tapestry框架的引擎对象中。
应用程序规范:
<meta key=”org.apache.tapestry.visit-class” value=”com.ttapestry4.engine.MyVisit”>
属性注入方式:
<inject property=”” type=”” object=””>
Global对象:
Global对象是一个应用程序空间,用来存储全局性的应用程序逻辑和数据。Global对象最终作为一个ServletContext的属性被储存。
应用程序规范:
<meta key=”org.apache.tapestry.global=class” value=”com.tapestry4.engine.MyGlobal”>
属性注入方式:
<inject property=”” type=”” object=””>
Tapestry属性注入Visit对象和Global对象实例本身的生命周期是sessin还是application,意思说并非是指某个特定的对象类,而是代指两中不同的生命周期的对象。
4.页面类和页面事件
在页面规范中指定对性的java类作为页面类
<page-specification class=”com.tapestry4.page.*”>
……
</page-specification>
或者在应用程序规范文件为所有页面类指定默认的包路径:
<meta key=”org.apache.tapestry.page-class-packages” value=”com.tapestry4.page”/>
所有组件都拥有一个隐藏的名称为page的组件属性,用以指明该组件最终被嵌入的页面,所有页面都有一个隐藏的名称为engine的页面属性,用以指明该页面正在调用的引擎对象。
设置默认的页面类
<meta key=”org.apache.tapestry.default-page-class” value=”come.tapestry4.engine.MyBasePage”>
页面事件暂时不写,回头添加!
Component组件绑定:
<component id=”” type=””> //id是对应的HTML模版里的jwcid,而type是官方组件
<binding name=”” value=””/> //包含组件的参数,及给予组件参数的value
</component>
查询官方的框架,可得到component的资料。
Name:参数名称
Type:参数的属性
Direction:参数相对于组件的传入传出方式.in表示我们可以通过该参数向组件传入数据,in/out代表该参数既有传入数据,又有传出数据。
Default:组件默认值
校验对象:
对输入数据进行校验是通过表单组件的两个参数进行配置,几乎所有表单组件都有这两个参数validators(提供一组校验对象)和displayName(向组件提供组件名称)
例
<binding name=”validtors” value=”validators:required,minLength= 6” >
在这里绑定了2个校验对象,即必须输入和长度至少为6
Tapestry校验对象:属性
BaseValidator:message
Email:
Required
Max:max=110 对数字最大值进行校验
Min:min=0.1 对数字最小值进行校验
MaxLength: MaxLength=10 对字符串最大长度进行校验
MinLength:MinLength=1 对字符串最小长度进行校验
MaxDate:maxDate= 06/09/2010 对格式为MM/dd/yyyy的最大日期进行校验
MinDate:mandate= 06/09/2010 对格式为MM/dd/yyyy的最小日期进行校验
校验未完~~回头在写