基于Tapestry4

源代码在线查看: buyfruit.java

软件大小: 20 K
上传用户: xxjjyy1237
关键词: Tapestry4
下载地址: 免注册下载 普通下载 VIP

相关代码

				package com.tapestry4;
				
				import java.util.ArrayList;
				import java.util.List;
				
				import org.apache.tapestry.IPage;
				import org.apache.tapestry.annotations.InjectPage;
				import org.apache.tapestry.annotations.InjectState;
				import org.apache.tapestry.annotations.Persist;
				import org.apache.tapestry.html.BasePage;
				import org.apache.tapestry.valid.ValidationDelegate;
				
				public abstract class BuyFruit extends BasePage {
				
					/**
					 * 这是T4的新特性,它声明了一个变量需要被持久化。有两种持久化方式:
					 * 第一:保存到session中,以@Persist("session")方式声明;
					 * 第二:保存到客户端,以@Persist("client")方式声明;这里的功效类似在页面上使用hidden
					 * 来保存变量。只是hidden需要在form中才可以使用,而这种方式,Tapestry会自动在页面上保存
					 * 变量(将该变量添加到页面上的所有URL链接组件参数中)。这样在进行页面跳转时,可以很方便地 getProductId()获取到变量值。
					 * 
					 * @return
					 */
					@Persist("client")
					public abstract Integer getFruitId();
					public abstract void setFruitId(Integer ig);
				
					private int buyMount;
					
					/**
					 * 如果这里不使用annotation声明,而是在page中声明:
					 * 
					 * @return
					 */
					@InjectState("visit")
					public abstract MyVisit getMyVisit();
				
					@InjectPage("Cart")
					public abstract IPage getCartPage();
					
					@Override
					protected void initialize() {
						buyMount = 0;
					}
				
					// 获取水果详细信息
					public Fruit getFruitDetail() {
						return Products.findFruitById(this.getFruitId());
					}
				
					// 购买水果
					public IPage buyFruitSubmit() {
						ValidationDelegate delegate = (ValidationDelegate)this.getBeans().getBean("delegate");
						if(delegate.getHasErrors()) {
							return this;
						}
						FruitCart fc = new FruitCart();
						Fruit f = Products.findFruitById(this.getFruitId());
						fc.setBuyFruit(f);
						fc.setBuyMount(this.getBuyMount());
						fc.setPayMoney(f.getPrice() * this.getBuyMount());
				//		MyVisit visit = (MyVisit)this.getVisit();
						List list = this.getMyVisit().getFruitCartList();
						if(list == null) {
							list = new ArrayList();
						}
						list.add(fc);
						this.getMyVisit().setFruitCartList(list);
						return getCartPage();
					}
				
					// 重新选择水果
					public String backShopSubmit() {
						return "Shop";
					}
				
					public int getBuyMount() {
						return buyMount;
					}
				
					public void setBuyMount(int buyMount) {
						this.buyMount = buyMount;
					}
				
				}
							

相关资源