action请求参数封装三种方式,封装参数到collection和map

原创
2014/07/23 10:44
阅读数 700

struts2的action封装数据的三种方式:
1 action本身属于modle 属于属性驱动
public class Regist extends ActionSupport{
 private String usename;
 private String password;
 private int age;
 @Override
 public String execute() throws Exception {
  //这里的action可自动接受数据,相当于modle
  return super.execute();
 }
 public void setUsename(String usename) {
  this.usename = usename;
 }
 public void setPassword(String password) {
  this.password = password;
 }
 public void setAge(int age) {
  this.age = age;
 }
}
一在struts2中,action是多实例的,不存在线程问题
二需要单独使用javabean将数据传到业务层


2  将属性封装到action的model成员变量:(属性驱动)
代码体现:
public class Regist extends ActionSupport{
 private User user;
 public String execute() throws Exception {
  //这里的action可自动接受数据
  return super.execute();
 }
 public void setUser(User user) {
  this.user = user;
 }
 //必须提供get方法,否则无法获取到model对象
 public User getUser() {
  return user;
 }
 
}
jsp页面上交时的代码体现:
<input type="txt" name="user.username"/>

3  使用ModelDriven接口,对请求数据进行封装 (模型驱动)
public class Regist extends ActionSupport implements ModelDriven<User>{\
 //必须手动实例化
 private User user=new User();
 public String execute() throws Exception {
  return NONE;
 }
 @Override
 public User getModel() {
  return user;
 }
}

4 封装复杂类型参数(集合类型 Collection 、 Map)
1) 封装数据到Collection 对象
 页面:
  产品名称 <input type="text" name="products[0].name" /><br/>
  产品价格 <input type="text" name="products[0].price" /><br/>
 Action :
  public class ProductAction extends ActionSupport {
   private List<Product> products;
   
   public List<Product> getProducts() {
    return products;
   }

   public void setProducts(List<Product> products) {
    this.products = products;
   }
  }
2) 封装数据到Map 对象
 页面:
  产品名称 <input type="text" name="map['one'].name" /><br/>  =======  one是map的键值
 Action :
  public class ProductAction2 extends ActionSupport {
   private Map<String, Product> map;

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

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

展开阅读全文
加载中
点击引领话题📣 发布并加入讨论🔥
打赏
0 评论
0 收藏
0
分享
返回顶部
顶部