免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 967 | 回复: 0
打印 上一主题 下一主题

Tapestry组件使用总结 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2008-04-21 19:07 |只看该作者 |倒序浏览
关键字: Link类组件
Tapestry总共有6种标准的link组件:
GenericLink, ActionLink, DirectLink,ServiceLink, ExternalLink和PageLink
*disabled参数 公有参数,disabled=true时,链接不可用
A) GenericLink 组件
e.g.
百度
用于跳转到应用程序范围以外的链接
B) ExternalLink 组件
e.g.
  日志名称
带参数的页面跳转,不涉及session,使用service=external
*parameters属性,用以传递数组类型的参数(Object[]{})
*page参数表示所要跳转到的页面类(LogDetails页面类)
使用ExternalLink时,所要跳转到的页面类必须继承IExternalPage接口,并实现一个方法.
Java代码 复制代码
   1. LogDetails.java  
   2. public abstract class LogDetails extends BasePage implements IExternalPage {  
   3.   
   4.   ......  
   5.   
   6. public void activateExternalPage(Object[] parameters,  IRequestCycle cycle){  
   7. this.setLogId((Integer) parameters[0]); //获取传递进来的参数并执行所需操作  
   8. }  
   9. }  
LogDetails.java
public abstract class LogDetails extends BasePage implements IExternalPage {
  ......
public void activateExternalPage(Object[] parameters,  IRequestCycle cycle){
this.setLogId((Integer) parameters[0]); //获取传递进来的参数并执行所需操作
}
}
IRequestCycle类型的参数cycle表示当前访问该页面的requestCycle
C) PageLink 组件
e.g.
个人设置
相当于不带参数的ExternalLink组件,不过使用的是service=page
D) DirectLink 组件
e.g.
  日志名称
Java代码 复制代码
   1. Log.java  
   2. public IPage logSelect(Integer id){  
   3. LogDetails logDetails = getLogDetails();  
   4. logDetails.setLogId(id);  
   5. return logDetails;  
   6. }  
Log.java
public IPage logSelect(Integer id){
LogDetails logDetails = getLogDetails();
logDetails.setLogId(id);
return logDetails;
}
DirectLink组件表现为一个HTML元素,用来提供一个URL,当用户点击时,触发页面中一个特定的监听方法.使用service=direct
涉及session,DirectLink拥有一个boolean类型的stateful参数来选择stateful或stateless,该参数默认为true,即stateful.
DirectLink通过listener监听方法将参数“扔”给下一个页面,这与ExternalLink的实现IExternalPage接口以及activateExternalPage方法接收参数不同.
关于DirectLink使用session的示例:
Java代码 复制代码
   1. Log.java  
   2. public IPage logSelect(IRequestCycle cycle){  
   3. IPage logDetails = cycle.getPage("LogDetails");  
   4. cycle.activate(logDetails);  
   5. }  
Log.java
public IPage logSelect(IRequestCycle cycle){
IPage logDetails = cycle.getPage("LogDetails");
cycle.activate(logDetails);
}
Java代码 复制代码
   1. LogDetails.java  
   2. public void beginResponse(IMarkupWriter writer, IRequestCycle cycle) {  
   3. Object[] logObj = cycle.getListenerParameters();  
   4. int logId = ((Integer)logObj[0]).intValue();  
   5. ...  
   6. }  
LogDetails.java
public void beginResponse(IMarkupWriter writer, IRequestCycle cycle) {
Object[] logObj = cycle.getListenerParameters();
int logId = ((Integer)logObj[0]).intValue();
...
}
先跳转到另一个页面,然后可以在该页面中获取传递过来的参数,因为参数随session传递过来了.
E) ActionLink 组件
e.g.
具体不了解,也么用过,听说这个组件在T5里面已经变了样了,以后再学习
F) ServiceLink 组件
e.g.
退出
听说ServiceLink组件可以使用Tapestry的9种服务,不过不知道如何使用,目前初入Tapestry,尚未涉及.
               
               
               

本文来自ChinaUnix博客,如果查看原文请点:http://blog.chinaunix.net/u/11409/showart_571748.html
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP