监听方法
Tapestry框架属于事件触发机制,监听方法是我们在客户端触发服务器端Tapestry框架的主要方式。监听方法有多种形式,当表单form被触发提交的时候,或者当一个链接被单击的时候,就会触发监听方法。监听方法存在于我们的页面类或组件类中,例如,DirctLink组件和Form组件都拥有一个监听参数,我们可以使用一个”listener”字符串将我们页面类中的监听方法绑定在组件的监听参数上。
监听方法其实就是一个普通的功用非抽象方法,它可能携带有参数,也可能返回某种类型的值。Tapestry框架并不强制要求监听方法必须携带参数或必须拥有返回值,一个普通的功用方法一旦与某个组件的监听参数通过“listener”字符串绑定,那么这个普通的功用方法就变成了监听方法。
1. 监听方法的返回类型
监听方法可以使void方法,也可以返回一个String字符串,或者可能是一个实现了IPage接口的页面对象实例。返回一个字符串或返回一个页面对象实例是为了激活并跳转页面以便响应请求。如果返回NULL,则跳转到当前页面。
Void:监听方法跳转到当前页面;
String: 监听方法根据返回的页面名称来激活页面并表现响应,返回NULL,则跳转到当前页面;
IPage:监听方法根据返回的页面类实例来激活页面对象。页面对象可以通过request cycle来获取,也可以通过页面属性注入页面实例来获得,返回NULL则跳转到当前页面;
ILink:监听方法根据返回的实现ILink接口的对象对客户端URL进行重定向。
2.监听方法的参数
当使用DirectLink组件,ActionLink组件,Submit组件等带有parameters参数的组件时,你甚至可以定制该组件的监听方法参数。DirectLink组件的parameters参数所携带的值将会被编码到URL中,以便我们可以通过监听方法的参数来直接获取。
例如:我们通过以下方式调用DirectLink组件。
<component id=”byFruitLink” type=”DirectLink”>
<binding name=”listener” value=”listener:buyFruit”/>
<binding name=”parameters” value=”{fruit.id,fruit.name}”/>
</component>
那么我们可以通过以下两种方式获取DirectLink组件的Parameters参数所绑定的值。
以IRequestCycle 对象作为监听方法的参数,然后通过该对象的getListener Parameters()方法获取一个包含所有数据的数组,再从该数组中依次取出组件parameters参数绑定的值,例如:
Public IPage buyFruit(IRequestCycle cycle){
Object[] parameters = cycle.getListenerparameters();
Integer id = (Integer) parameters[0];
String name =(String)parameter[1];
}
直接以监听方法的参数对应获取每一个DirectLink组件的parameters参数所携带的值。
Public IPage buyFruit(Integer id,String name){
}
第二种方式显得非常灵活。DirectLink组件的parameters参数所携带的值并不一定都是String类型,它可以是任意类型,但是监听方法参数的类型必须与parameters组件参数所携带的值得类型一一对应。
分享到:
相关推荐
【Tapestry笔记】 Tapestry是一个基于Java的Web应用框架,它采用了面向组件的开发方式,这使得它与其他如Structs、WebWork、SpringMVC等采用传统面向元素开发方式的框架有所不同。面向组件的开发模式旨在克服面向...
### Struts2学习笔记知识点详解 #### 一、Struts2框架概览 **起源与发展:** Struts2是WebWork框架的后续版本,融合了Struts1和WebWork的优点,形成了一种更为先进和灵活的MVC框架。相较于Struts1,Struts2在设计...
本学习笔记将深入探讨Spring 3.0 MVC框架,帮助读者理解并掌握其主要特性。 首先,Spring MVC设计的核心理念是高度可配置性。每个功能模块都可以根据需求进行定制,这意味着开发者可以根据项目需求调整框架的工作...
Struts2提供了丰富的插件和集成框架,可以与其他技术如Spring、Hibernate等无缝配合,提供了如JSF、Tapestry、SpringMVC等视图层框架的替代方案。面向接口编程、面向组件编程和面向方面编程的思想在Struts2中得到了...
AppFuse 是一个开源项目,旨在加速和简化J2EE应用程序的开发流程。由Matt Raible设计,它作为一...通过深入阅读和实践AppFuse的学习笔记,开发者可以逐步掌握其核心功能,并将其应用到实际项目中,提升开发质量和效率。