Struts2把数据封装到集合中之封装到map中

struts框架封装数据可以封装到集合中也可以封装到map中,该篇博客主要讲解将数据封装到map中。

1. 封装复杂类型的参数(集合类型 Collection 、Map接口等)
2. 需求:页面中有可能想批量添加一些数据,那么现在就可以使用上述的技术了。把数据封装到集合中
3. 把数据封装到Map中(双元素集合)
    * Map集合是键值对的形式,页面的写法
        > <input type="text" name="map['one'].name" />
    * Action中提供map集合,并且提供get和set方法
以map集合为例:
1.创建javaBean类User:
package com.huida.domain;

public class User {
    
    private String username;
    private String password;
    public String getUsername() {
        return username;
    }
    public void setUsername(String username) {
        this.username = username;
    }
    public String getPassword() {
        return password;
    }
    public void setPassword(String password) {
        this.password = password;
    }
    @Override
    public String toString() {
        return "User [username=" + username + ", password=" + password + "]";
    }
    
    
}

2.创建Action类Regist5Action:action类的写法与数据封装中的属性封装类似:定义属性map,对map定义其set和get方法。

package com.huida.action1;

import java.util.Map;

import com.huida.domain.User;
import com.opensymphony.xwork2.ActionSupport;


public class Regist5Action extends ActionSupport{
    
    private Map<String, User> map;

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

    public void setMap(Map<String, User> map) {
        this.map = map;
    }
    @Override
    public String execute() throws Exception {

        for(String str:map.keySet()){
            User user=map.get(str);
            System.out.println(str+"..."+user);
        }
        return NONE;
    }
    
}

3.在struts.xml中对action进行配置:

<package name="demo" namespace="/" extends="struts-default">
        <action name="regist5Action" class="com.huida.action1.Regist5Action"></action>
 </package>

4.书写表单:

这里需要注意的地方:

(1)表单input标签中name的值中集合的名字map应该与Regist5Action中定义的属性名相同。

(2)map[ ]方括号里面的内容可以随便写,但是同一条记录中的两个输入框要保持一致。这里面的one相当于map的键值。

<h3>数据封装到map集合中</h3>
    <!-- 将数据封装到集合中,可以封装多条数据,所以我们在这里多写几个记录 -->
    <form action="${ pageContext.request.contextPath }/regist5Action.action" method="post"> 
        姓名<input type="text" name="map['one'].username"/><br/><!-- map[ ]这里面的内容随便写,但是同一条记录中的两个输入框要保持一致。这里面的one相当于定义map中 的String类型的值 -->
        密码<input type="text" name="map['one'].password"/><br/>
        姓名<input type="text" name="map['two'].username"/><br/>
        密码<input type="text" name="map['two'].password"/><br/>
        <input type="submit" value="注册">
        
    </form>

启动服务器,运行表单index.jsp。在输入框中输入姓名和密码,点击注册,在控制台输出如下内容表示封装成功:

 

 

原文地址:https://www.cnblogs.com/wyhluckdog/p/10106769.html