Struts2的數據封裝 屬性、模型驅動和複雜數據封裝至List、Map集合中

1、屬性驅動

①提供屬性的set的方法的方式

  • 適用於獲取參數較少的情況(文件下載)
  • struts2提供了類型轉換
public class UserAction1 extends ActionSupport {
    private String username;
    private String password;
    private Integer age;
    private Date birthday;
    private Double salary;

    public void setUsername(String username) {
        this.username = username;
    }

    public void setPassword(String password) {
        this.password = password;
    }

    public void setAge(Integer age) {
        this.age = age;
    }

    public void setBirthday(Date birthday) {
        this.birthday = birthday;
    }

    public void setSalary(Double salary) {
        this.salary = salary;
    }

    @Override
    public String execute() throws Exception {
        //封裝數據
        System.out.println("username"+username);
        System.out.println("password"+password);
        System.out.println("age"+age);
        System.out.println("birthday"+birthday);
        System.out.println("salary"+salary);


        return NONE;
    }

② 提供頁面表達式

<h3>方式二:屬性驅動-在頁面中提供表達式</h3>
<s:fielderror></s:fielderror>
<form action="userDemo2.action" method="post">
    用戶名:<input type="text" name="user.username"><br/>
    密碼:<input type="password" name="user.password"><br/>
    年齡:<input type="text" name="user.age"><br/>
    生日:<input type="date" name="user.birthday"><br/>
    工資:<input type="text" name="user.salary"><br/>
    <input type="submit" value="提交">
</form>

 

public class UserAction2 extends ActionSupport {
    //提供一個User對象
    private User user;
    //提供user的set、get方法  一定要提供set方法
    //
    public User getUser() {
        return user;
    }

    public void setUser(User user) {
        this.user = user;
    }

    @Override
    public String execute() throws Exception {
        System.out.println(user);
        return NONE;
    }
}

2、模型驅動 

通過實現ModelDriven<Class.name>接口實現


public class UserAction3 extends ActionSupport implements ModelDriven<User> {
    //模型驅動使用的對象,前提必須手動實例化
    private User user = new User();
    @Override
    public User getModel() {
        return user;
    }

    @Override
    public String execute() throws Exception {
        System.out.println(user);
        return NONE;
    }
}

3、複雜數據的封裝

封裝到list集合中

頁面:
<h3>方式一:封裝到list集合中:批量插入商品</h3>
<form action="productDemo1.action" method="post">
    商品的名稱:<input type="text" name="products[0].name"><br/>
    商品的價格:<input type="text" name="products[0].price"><br/>
    商品的名稱:<input type="text" name="products[1].name"><br/>
    商品的價格:<input type="text" name="products[1].price"><br/>
    商品的名稱:<input type="text" name="products[2].name"><br/>
    商品的價格:<input type="text" name="products[2].price"><br/>
   <input type="submit" value="提交"><br/>
</form>
<h3>方式二:封裝到Map集合中:批量插入商品</h3>
<form action="productDemo2.action" method="post">
    商品的名稱:<input type="text" name="map['one'].name"><br/>
    商品的價格:<input type="text" name="map['one'].price"><br/>
    商品的名稱:<input type="text" name="map['two'].name"><br/>
    商品的價格:<input type="text" name="map['two'].price"><br/>
    商品的名稱:<input type="text" name="map['three'].name"><br/>
    商品的價格:<input type="text" name="map['three'].price"><br/>
    <input type="submit" value="提交"><br/>
</form>

控制:方式一
public class ActionProduct extends ActionSupport{
    private List<Product> products;
    //提供集合的set、get方法

    public List<Product> getProducts() {
        return products;
    }

    public void setProducts(List<Product> products) {
        this.products = products;
    }

    @Override
    public String execute() throws Exception {
        System.out.println(products);
        return NONE;
    }
}
控制:方式二
public class ProductAction2 extends ActionSupport{
    Map<String,Product> map;

    public Map<String, Product> getMap() {
        return map;
    }

    public void setMap(Map<String, Product> map) {
        this.map = map;
    }

    @Override
    public String execute() throws Exception {
        for(String key: map.keySet()){
            Product product = map.get(key);
            System.out.println(key +"  "+product);
        }
        return NONE;
    }
}

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章