关键字: 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尚未涉及 |