1. 程式人生 > >Struts2把資料封裝到集合中之封裝到map中

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。在輸入框中輸入姓名和密碼,點選註冊,在控制檯輸出如下內容表示封裝成功: