Struts2批量数据处理

1.数组和集合的处理
jsp页面代码

<body>
    <form  action="add.action"  method="post">
    用户名:<input type="text"  name="name"><br>
    爱好:<input type="checkbox"  name="hobbies"  value="football"/>足球
    <input type="checkbox"  name="hobbies"  value="football"/>足球
    <input type="checkbox"  name="hobbies"  value="pingpang"/>乒乓
    <input type="checkbox"  name="hobbies"  value="yumaoqiu"/>羽毛球<br>
    喜欢游戏:<input type="checkbox"  name="games"  value="lol"/>英雄联盟
    <input type="checkbox"  name="games"  value="dota"/>dota
    <input type="checkbox"  name="games"  value="cs"/>反恐精英<br>
    <input type="submit" value="提交"/>
    </form>
    </body>

Action处理


import java.util.List;

import com.opensymphony.xwork2.Action;

public class UserAction {
    private String name;
    private  String[] hobbies;
    private  List<String> games;
    public String execute(){
        System.out.println(name);
        System.out.println(hobbies.length);
        System.out.println("-------------");
        System.out.println(games);
        return  Action.SUCCESS;
    }

    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public String[] getHobbies() {
        return hobbies;
    }
    public void setHobbies(String[] hobbies) {
        this.hobbies = hobbies;
    }

    public List<String> getGames() {
        return games;
    }
    public void setGames(List<String> games) {
        this.games = games;
    }
}

2.集合对象的处理

这里写代码片

比如定义一个User,提交一组数据,jsp如下:

 <form action="batch.action"  method="post">
  用户名:<input type="text"  name="users.name"/>年龄:<input type="text"  name="users.age"><br>
  用户名:<input type="text"  name="users.name"/>年龄:<input type="text"  name="users.age"><br>
  用户名:<input type="text"  name="users.name"/>年龄:<input type="text"  name="users.age"><br>
<input type="submit"  value="提交"/>  
  </form>

上述是提交了三组数据,每组数据由name和age组成,如果我们只用第一种方式,struts2无法识别是一组数据,无法将name和age匹配处理,只会认为输入了6次,其中三次是没有age的,为0,三个是没有name的,为null,如下:

User [name=null, age=1]
User [name=null, age=2]
User [name=null, age=3]
User [name=1, age=0]
User [name=2, age=0]
User [name=3, age=0]

这就用到了集合对象处理的数据,struts2提供了一个插件(其实就是一个拦截器)struts-list-plugin1.0.jar
这里写图片描述
观察里面的struts-plugin.xml
这里写图片描述
显然我们struts.xml要继承list-default了。然后引用里面的拦截器栈

<action  name="batch"  class="cn.sxt.action.BatchAction">
            <result >/index.jsp</result>
            <interceptor-ref name="listStack"/>
        </action>

jsp页面不变
Action的代码其实还是只用了数组,唯一的区别就是利用了插件(拦截器)就能匹配成功了


import java.util.List;

import cn.sxt.entity.User;

import com.opensymphony.xwork2.Action;

public class BatchAction {
    private List<User>  users;

     public String execute(){
         for(User u:users){

             System.out.println(u);
         }
         return  Action.SUCCESS;
     }
    public List<User> getUsers() {
        return users;
    }
    public void setUsers(List<User> users) {
        this.users = users;
    }
}

结果如下

User [name=1, age=1]
User [name=2, age=2]
User [name=3, age=3]

User类

public class User {
    private String name;
    private int age;
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public int getAge() {
        return age;
    }
    public void setAge(int age) {
        this.age = age;
    }
    @Override
    public String toString() {
        return "User [name=" + name + ", age=" + age + "]";
    }

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值