快速业务通道

了解Tapestry,第2部分 - 规划和开发Tapestry应用程序 - 编程入门网

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-20

Comments.html:留言页面。

对于列表中的每个页面,都要创建一个新的 Java 类,可以用与页面相同的名称作为类名。例如,清单 4 是驱动 Comments.HTML 页面的类的骨架代码:

清单 4. 检查订单状态的简单 Tapestry 类

package com.burgerdome.display; import org.apache.tapestry.annotations.*; import org.apache.tapestry.html.BasePage; public abstract class Status extends BasePage {   @Persist   public abstract int getOrderNumber();   public abstract void setOrderNumber(int orderNumber);   // Methods go here }

可以从这些行开始每个 Tapestry 类:类名与它交互的文件的名称(Status.java 用于 Status.html、Comments.java 用于 Comments.html,等等),确保类扩展自 org.apache.tapestry.html.BasePage 类。确保给 Tapestry 类提供了一个包;通常在同一包中找到所有页面最容易。还需要导入 BasePage,而且前进一步并导入 Tapestry 注释也是一个好主意;在开发的几乎每个 Tapestry 组件中都会使用它们。

最后,前进一步,设置可能需要的持久变量;清单 4 中的示例保存一个订单号,该订单号用于在应用程序的业务对象区查询订单。请了解 @Persist 并不代表 Tapestry 要在数据库或其他永久存储中持久化或保存变量;它只表明变量在重复调用对象实例期间一直可用。这意味着可以允许用户只输入值(在这个示例中代表订单)一次,然后反复使用这个值,而不需要用户每次返回状态页面都输入这个值。还请注意,没有为持久变量声明类型;只是提供了 “getter” 和 “setter” 方法,而 Tapestry 负责剩下的处理。类本身被标记成抽象的,这允许 Tapestry 负责设置类的实例,并把实例挂接到 Tapestry 引擎。

清单 4 中的简单示例可以充当所有 Tapestry 对象的起点。只要修改名称和任何需要的持久变量,让页面对象投入使用的工作就完成了一半(有时甚至更多)。

添加操作

下面考虑没有绑定到页面上的简单值的操作。例如,在状态页面中,可能让用户输入订单号,然后让另一个按钮或链接向用户提供他们的状态。第一个操作被紧密地绑定到清单 4 所示的 setOrderNumber() 方法,第二个操作则需要查询订单号。清单 5 展示了处理这个任务的简单代码:

清单 5. 添加订单处理

package com.burgerdome.display; import org.apache.tapestry.annotations.*; import org.apache.tapestry.html.BasePage; import com.burgerdome.order.*; public abstract class Status extends BasePage {   public abstract Order getOrder();   public abstract void setOrder(order);   @Persist   public abstract int getOrderNumber();   public abstract void setOrderNumber(int orderNumber);   public void getStatus() {    OrderQueue queue = OrderQueue.getInstance();    Order order = getOrder(getOrderNumber());    setOrder(order);   } }

了解Tapestry,第2部分 - 规划和开发Tapestry应用程序(8)

时间:2011-01-31 IBM Brett McLaughlin

您会注意到这个代码中的几个新部分。首先,导入了一些业务对象;在这个示例中,这些对象在 com.burgerdome.order 包中。其次,我添加了两个新方法:getOrder() 和 setOrder()。这两个方法被标记为抽象的,这样 Tapestry 会把它们实现为简单的 “getter” 和 “setter” 方法,并为这个类创建类型为 Order 的新变量。除非确实有好的理由不这么做,否则最好是让 Tapestry 替您管理这些变量。

还请注意这两个新方法被放在 @Persist 注释上面。这意味着订单在请求或

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号