tapestry4初级开发指南(编辑修改稿)内容摘要:

width=240水果名称 /td td width=139单价 /td /tr tr jwcid=fruitListLoop align=center tdspan jwcid=fruitName名称 /span/td tdspan jwcid=fruitPrice单价 /span元 /td /tr /table /body /html 为了能够在登陆之后,跳转到商品目录页面 FirstPage,我们需要对 进行修改: public abstract class Home extends BasePage { //用户名 public abstract String getUsername()。 //密码 public abstract String getPassword()。 @InjectPage(Shop) public abstract FirstPage getShopPage()。 //登陆表单的监听方法 public IPage loginSubmit(IRequestCycle cycle) { (())。 (())。 return this. getShopPage ()。 } } 注意监听方法 loginSubmit 的返回参数,在这里,直接返回 FirstPage 页面的实例即可跳转到 FirstPage 页面。 @InjectPage(Shop)是 新提供的 annotation 包中的一个annotation。 凡是该 annotation 所声明的抽象 getter 方法,均会获取到指定页面的实例。 在这里就获取到 FirstPage 页面的实例。 在输入用户名和密码之后,我们就可以跳转到新页面了: 成都麦柯 技术开发二部 成都麦柯系统集成有限公司 20 3) 购买水果 为了购买水果,我们需要为 Shop 页面的每个水果名称添加一个链接,一旦用户点击该种水果,我 们就跳转到一个水果购买页面,该页面显示了水果的详细信息并且可以让用户输入购买的数量。 为 Shop 页面的每个水果名称添加链接: 修改 : package。 import。 import。 import。 import。 public abstract class Shop extends BasePage { @InjectPage(BuyFruit) public abstract BuyFruit getBuyFruitPage()。 public List getFruitList() { return ()。 } public IPage buyFruit(Integer ig) { BuyFruit page = ()。 (ig)。 return page。 } } 修改 : pagespecification property name=fruit/ ponent id=fruitListLoop type=Foreach binding name=source value=fruitList/ binding name=value value=fruit/ binding name=element value=literal:tr/ /ponent 成都麦柯 技术开发二部 成都麦柯系统集成有限公司 21 ponent id=fruitName type=Insert binding name=value value=/ /ponent ponent id=fruitPrice type=Insert binding name=value value=/ /ponent ponent id=buyFruitLink type=DirectLink binding name=listener value=listener:buyFruit/ binding name=parameters value=/ /ponent /pagespecification 修改 : html body table width=419 border=1 tr align=center td width=240水果名称 /td td width=139单价 /td /tr tr jwcid=fruitListLoop align=center tda href= jwcid=buyFruitLinkspan jwcid=fruitName名 称/span/a/td tdspan jwcid=fruitPrice单价 /span元 /td /tr /table /body /html 从上面的修改可以看出,我们添加了一个 DirectLink 组件,该组件的监听方法是 public IPage buyFruit(Integer ig),并传递参数 binding name=parameters value=/。 熟悉 T3的朋友会发现, T4 中监听方法的用法有很大区别,现 在我们看到的是监听方法的另外一种用法。 直接将 DirectLink 传递的输入参数作为其监听方法的参数。 一旦 DirectLink 触发监听成都麦柯 技术开发二部 成都麦柯系统集成有限公司 22 方法,我们直接就可以从监听方法的输入参数中获取到被传递过来的。 当然,监听方法的输入参数是与 类型相对应的。 public IPage buyFruit(Integer ig) { BuyFruit page = ()。 (ig)。 return page。 } 在 这个监听方法中,我们获取到了 DirectLink 传递的参数,并且我们向下一个页面传递水果的 ID 值,在下一个页面,我们就可以根据这个 ID 值,查找到对应的水果详细信息。 水果详细信息页面: package。 import。 import。 import。 public class BuyFruit extends BasePage { private Integer fruitId。 private int buyMount。 @Override protected void initialize() { fruitId = null。 buyMount = 0。 } // 获取水果详细信息 public Fruit getFruitDetail() { return (())。 } // 购买水果 @SuppressWarnings(deprecation) public String buyFruitSubmit() { FruitCart fc = new FruitCart()。 Fruit f = (())。 (f)。 (())。 (() * ())。 MyVisit visit = (MyVisit)()。 ListFruitCart list = ()。 if(list == null) { list = new ArrayListFruitCart()。 } (fc)。 (list)。 return Cart。 成都麦柯 技术开发二部 成都麦柯系统集成有限公司 23 } // 重新选择水果 public String backShopSubmit() { return Shop。 } public Integer getFruitId() { return fruitId。 } public void setFruitId(Integer fruitId) { = fruitId。 } public int getBuyMount() { return buyMount。 } public void setBuyMount(int buyMount) { = buyMount。 } } pagespecification ponent id=fruitName type=Insert binding name=value value=/ /ponent ponent id=fruitPrice type=Insert binding name=value value=/ /ponent ponent id=fruitMount type=Insert binding name=value value=/ /ponent ponent id=buyFruitForm type=Form binding name=clientValidationEnabled value=true/ /ponent ponent id=fruitIdHidden type=Hidden binding name=value value=fruitId/ /ponent ponent id=fruitBuyMount type=TextField binding name=value value=buyMount/ binding name=translator value=translator:number/ binding name=displayName value=literal:购买数量 / /ponent ponent id=buyFruitSubmit type=Submit binding name=listener value=listener:buyFruitSubmit/ 成都麦柯 技术开发二部 成都麦柯系统集成有限公司 24 /ponent ponent id=backShopSubmit type=Submit binding name=listener value=listener:backShopSubmit/ /ponent /pagespecification html body jwcid=@Body form jwcid=buyFruitForm span jwcid=fruitIdHidden/ table width=242 border=1 tr align=center td width=121水果名称 /td td width=105span jwcid=fruitName名称 /span/td /tr tr align=center td单价 /td tdspan jwcid=fruitPrice/span元 /td /tr tr align=center td存货 /td tdspan jwcid=fruitMount20/span斤 /td /tr tr align=center td购买数量 /td tdinput type=text jwcid=fruitBuyMount size=3 length=3/斤 /td /tr tr align=center。
阅读剩余 0%
本站所有文章资讯、展示的图片素材等内容均为注册用户上传(部分报媒/平媒内容转载自网络合作媒体),仅供学习参考。 用户通过本站上传、发布的任何内容的知识产权归属用户或原始著作权人所有。如有侵犯您的版权,请联系我们反馈本站将在三个工作日内改正。