电脑故障

位置:IT落伍者 >> 电脑故障 >> 浏览文章

Tapestry组件使用总结


发布日期:2020/1/26
 

关键字: Link类组件

Tapestry总共有种标准的link组件:

GenericLink ActionLink DirectLinkServiceLink ExternalLink和PageLink

*disabled参数 公有参数disabled=true时链接不可用

A) GenericLink 组件

eg

<a @GenericLink>百度</a>

用于跳转到应用程序范围以外的链接

B) ExternalLink 组件

eg

<a @ExternalLink page=LogDetails parameters=ognl:new javalangObject[]{itemid}>

<span jwcid=@Insert value=ognl:itemname>日志名称</span>

</a>

带参数的页面跳转不涉及session使用service=external

*parameters属性用以传递数组类型的参数(Object[]{})

*page参数表示所要跳转到的页面类(LogDetails页面类)

使用ExternalLink时所要跳转到的页面类必须继承IExternalPage接口并实现一个方法

Java代码 复制代码

LogDetailsjava

public abstract class LogDetails extends BasePage implements IExternalPage {

public void activateExternalPage(Object[] parameters IRequestCycle cycle){

thissetLogId((Integer) parameters[]); //获取传递进来的参数并执行所需操作

}

}

LogDetailsjava

public abstract class LogDetails extends BasePage implements IExternalPage {

public void activateExternalPage(Object[] parameters IRequestCycle cycle){

thissetLogId((Integer) parameters[]); //获取传递进来的参数并执行所需操作

}

}

IRequestCycle类型的参数cycle表示当前访问该页面的requestCycle

C) PageLink 组件

eg

<a @PageLink page=UserInfo>个人设置</a>

相当于不带参数的ExternalLink组件不过使用的是service=page

D) DirectLink 组件

eg

<a jwcid=@DirectLink listener=listener:logSelect parameters=itemid>

<span jwcid=@Insert value=ognl:itemname>日志名称</span>

</a>

Java代码 复制代码

Logjava

public IPage logSelect(Integer id){

LogDetails logDetails = getLogDetails();

logDetailssetLogId(id);

return logDetails;

}

Logjava

public IPage logSelect(Integer id){

LogDetails logDetails = getLogDetails();

logDetailssetLogId(id);

return logDetails;

}

DirectLink组件表现为一个HTML<a>元素用来提供一个URL当用户点击时触发页面中一个特定的监听方法使用service=direct

涉及sessionDirectLink拥有一个boolean类型的stateful参数来选择stateful或stateless该参数默认为true即stateful

DirectLink通过listener监听方法将参数给下一个页面这与ExternalLink的实现IExternalPage接口以及activateExternalPage方法接收参数不同

关于DirectLink使用session的示例:

<a jwcid=@DirectLink listener=listener:logSelect parameters=ognl:new javalangObject[]{itemid}>

Java代码 复制代码

Logjava

public IPage logSelect(IRequestCycle cycle){

IPage logDetails = cyclegetPage(LogDetails);

cycleactivate(logDetails);

}

Logjava

public IPage logSelect(IRequestCycle cycle){

IPage logDetails = cyclegetPage(LogDetails);

cycleactivate(logDetails);

}

Java代码 复制代码

LogDetailsjava

public void beginResponse(IMarkupWriter writer IRequestCycle cycle) {

Object[] logObj = cyclegetListenerParameters();

int logId = ((Integer)logObj[])intValue();

}

LogDetailsjava

public void beginResponse(IMarkupWriter writer IRequestCycle cycle) {

Object[] logObj = cyclegetListenerParameters();

int logId = ((Integer)logObj[])intValue();

}

先跳转到另一个页面然后可以在该页面中获取传递过来的参数因为参数随session传递过来了

E) ActionLink 组件

eg

具体不了解也么用过听说这个组件在T里面已经变了样了以后再学习

F) ServiceLink 组件

eg

<a jwcid=@ServiceLink service=literal:restart>退出</a>

听说ServiceLink组件可以使用Tapestry的种服务不过不知道如何使用目前初入Tapestry尚未涉及

上一篇:Scala代码编写中常见的十大陷阱

下一篇:面向对象的设计法确保软件的健壮性