struts2 數組、List、Map的使用

1. struts2中使用數組

在struts2中使用數組有兩種方式:
方式一:

<s:form action="">
	<s:textfield name="userName" />
	<s:textfield name="userName" />
	<s:textfield name="userName" />
</s:form>

注意這裏每個標籤中name屬性是相同的。

對應的Action爲:

public class TestAction extends ActionSupport{
	public String execute(){
		return "success";
	}
	private String[] userName;
	
	public void setUserName(String[] userName){
		this.userName = userName;
	}
	public String[] getUserName(){
		return userName;
	}
}

其中userName不必初始化。

在其他頁面中使用該數組的值:

userName1 : <s:property value="userName[0]" />
userName2 : <s:property value="userName[1]" />
userName3 : <s:property value="userName[2]" />

這裏跟java中使用數組差不多。

方式二:

<s:form action="">
	<s:textfield name="userName[0]" />
	<s:textfield name="userName[1]" />
	<s:textfield name="userName[2]" />
</s:form>

其中對應的Action爲:

public class TestAction extends ActionSupport{
	public String execute(){
		return "success";
	}
	private String[] userName = new String[10];
	
	public void setUserName(String[] userName){
		this.userName = userName;
	}
	public String[] getUserName(){
		return userName;
	}
}

這裏要注意,對應的數組需要初始化,否則會拋出異常。

2. struts2中使用List

其中jsp頁面也跟使用數組的兩種方式一致:
方式一:

<s:form action="">
	<s:textfield name="userName" />
	<s:textfield name="userName" />
	<s:textfield name="userName" />
</s:form>

方式二:

<s:form action="">
	<s:textfield name="userName[0]" />
	<s:textfield name="userName[1]" />
	<s:textfield name="userName[2]" />
</s:form>

在Action中:

public class TestAction ActionSupport{
	public String execute(){
		return "success";
	}
	private List userName;
	
	public setUserName(List userName){
		this.userName = userName;
	}
	public getUserName(){
		return this.userName;
	}
}

在這裏List不用初始化。


當然也可以給List加上相應的泛型,比如:
List<Integer> ages;
List<User> users; 等。
如果沒有則默認爲String類型。

使用示例:

假設我們有一個User.java類:

public class User{
	private String name;
	public void setName(String name){
		this.name = name;
	}
	public String getName(){
		return name;
	}
}

在Action類中我們有這樣的定義:

private List<User> users;
public void setUsers(List<User> users){
	this.users = users;
}
public List<User> getUsers(){
	return users;
}

則我們在jsp頁面中可以這樣使用:

<s:form acion="">
	<s:textfield name="users[0].name" />
	<s:textfield name="users[1].name" />
	<s:textfield name="users[2].name" />
</s:form>

當然,這裏也已加下角標也可以不加,即直接使用:users.name,效果一致。
 

3. struts2中使用Map

Action類:

public class Test extends ActionSupport{
	private Map<String,String> map;
	public void setMap(Map<String,String> map){
		this.map = map;
	}
	public Map<String,String> getMap(){
		return map;
	}
}

這裏我們也不用對Map進行初始化,struts2框架會幫我們自行創建。

在jsp頁面我們有兩種方式使用Map:
方式一:

<s:form action="">
	<s:textfield name="map.zhangsan" />
	<s:textfield name="map.lisi" />
	<s:textfield name="map.wangwu" />
</s:form>

其中map.的後面爲map的key,自己輸入的數據爲map的value.

方式二:

<s:form action="">
	<s:textfield name="map['zhangsan']" />
	<s:textfield name="map['lisi']" />
	<s:textfield name="map['wangwu']" />
</s:form>

其中map[]中單引號中的爲map的key,輸入的數據爲map的value.

在調用頁面我們可以這樣調用:

<s:property value="map.lisi" />
或者:
<s:property value="map['lisi'] />
這兩種調用方式均能獲取到map中key爲lisi對應的value。

當然map也可以使用其他類型作爲key值或value值,比如:
Map<String,User> userMap;等。

注:這裏我是用的是struts-2.5.16

參考資料:Struts2 In Action

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