⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 buyfruit.java

📁 基于Tapestry4
💻 JAVA
字号:
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中声明:
	 * <inject property="myVisit" type="state" object="visit"/>
	 * @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<FruitCart> list = this.getMyVisit().getFruitCartList();
		if(list == null) {
			list = new ArrayList<FruitCart>();
		}
		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;
	}

}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -