Tapestry组件运用总结(Link)

Tapestry总共有6种标准的link组件:
GenericLink, ActionLink, DirectLink,ServiceLink, ExternalLink和PageLink
*disabled参数 公有参数,disabled=true时,链接不可用

[b]A) GenericLink 组件[/b]
e.g.
    <a href="http://www.baidu.com" jwcid="[b]@GenericLink[/b]">百度</a>
    用于跳转到应用程序范围以外的链接

[b]B) ExternalLink 组件[/b]
e.g.
    <a href="" jwcid="[b]@ExternalLink[/b]" [b]page[/b]="[b]LogDetails[/b]" [b]parameters[/b]="ognl:new java.lang.[b]Object[][/b]{item.id}">
      <span jwcid="@Insert" value="ognl:item.name">日志名称</span>
    </a>
    带参数的页面跳转,不涉及session,使用service=external
    *parameters属性,用以传递数组类型的参数(Object[]{})
    *page参数表示所要跳转到的页面类(LogDetails页面类)
    使用ExternalLink时,所要跳转到的页面类必须继承[b]IExternalPage[/b]接口,并实现一个方法.
[code]LogDetails.java
public abstract class LogDetails extends BasePage implements IExternalPage {

......

public void activateExternalPage(Object[] parameters, IRequestCycle cycle){
this.setLogId((Integer) parameters[0]); //获取传递进来的参数并执行所需操作
}
}
[/code]
    IRequestCycle类型的参数cycle表示当前访问该页面的requestCycle

[b]C) PageLink 组件[/b]
e.g.
    <a href="" jwcid="[b]@PageLink[/b]" [b]page[/b]="[b]UserInfo[/b]">个人设置</a>
    相当于不带参数的ExternalLink组件,不过使用的是service=page

[b]D) DirectLink 组件[/b]
e.g.
    <a jwcid="[b]@DirectLink[/b]" [b]listener[/b]="listener:logSelect" [b]parameters[/b]="item.id">
      <span jwcid="@Insert" value="ognl:item.name">日志名称</span>
    </a>
[code]Log.java
public IPage logSelect(Integer id){
LogDetails logDetails = getLogDetails();
logDetails.setLogId(id);
return logDetails;
}
[/code]
    DirectLink组件表现为一个HTML<a>元素,用来提供一个URL,当用户点击时,触发页面中一个特定的监听方法.使用service=direct
    涉及session,DirectLink拥有一个boolean类型的stateful参数来选择stateful或stateless,该参数默认为true,即stateful.
    DirectLink通过listener监听方法将参数“扔”给下一个页面,这与ExternalLink的实现IExternalPage接口以及activateExternalPage方法接收参数不同.
    关于DirectLink使用session的示例:
    <a jwcid="[b]@DirectLink[/b]" [b]listener[/b]="listener:logSelect" [b]parameters[/b]="ognl:new java.lang.Object[]{item.id}">
[code]Log.java
public IPage logSelect(IRequestCycle cycle){
IPage logDetails = cycle.getPage("LogDetails");
cycle.activate(logDetails);
}
[/code]
[code]LogDetails.java
public void beginResponse(IMarkupWriter writer, IRequestCycle cycle) {
Object[] logObj = cycle.getListenerParameters();
int logId = ((Integer)logObj[0]).intValue();
...
}
[/code]
    先跳转到另一个页面,然后可以在该页面中获取传递过来的参数,因为参数随session传递过来了.

[b]E) ActionLink 组件[/b]
e.g.
    具体不了解,也么用过,听说这个组件在T5里面已经变了样了,以后再学习

[b]F) ServiceLink 组件[/b]
e.g.
    <a jwcid="@ServiceLink" service="literal:restart">退出</a>
    听说ServiceLink组件可以使用Tapestry的9种服务,不过不知道如何使用,目前初入Tapestry,尚未涉及.
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值