Action 代码:
首有个Province 类 代码:
package tutorial;
public class Province {
public Province(int id, String name) {
this.id =id;
this.name = name;
}
public Province() {
}
private int id;
private String name;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
然后有个City 类 代码:
package tutorial;
public class City {
private int id;
private String name;
private int provinceId;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getProvinceId() {
return provinceId;
}
public void setProvinceId(int provinceId) {
this.provinceId = provinceId;
}
}
最后Action
package tutorial;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import com.opensymphony.xwork2.ActionSupport;
public class DoubleListAction extends ActionSupport {
/**
*
*/
private static final long serialVersionUID = -6820485548014626629L;
// 省份的集合
private List<Province> provinceList;
// 省下的城市的集合, 这里的key值是省份的ID,List<City> 是省下的城市
private Map<Integer, List<City>> cityMap;
public String execute() {
provinceList= new ArrayList<Province>();
Province province;
province = new Province();
province.setId(1);
province.setName("山西省");
provinceList.add(province);
province = new Province();
province.setId(2);
province.setName("陕西省");
provinceList.add(province);
province = new Province();
province.setId(3);
province.setName("河南省");
provinceList.add(province);
cityMap = new HashMap<Integer, List<City>>();
List<City> cityList = new ArrayList<City>();
City city;
city = new City();
city.setId(1);
city.setName("太原市");
city.setProvinceId(1);
cityList.add(city);
city= new City();
city.setId(2);
city.setName("大同市");
city.setProvinceId(1);
cityList.add(city);
city= new City();
city.setId(3);
city.setName("长治市");
city.setProvinceId(1);
cityList.add(city);
cityMap.put(1, cityList);
cityList = new ArrayList<City>();
city= new City();
city.setId(4);
city.setName("西安市");
city.setProvinceId(2);
cityList.add(city);
city= new City();
city.setId(5);
city.setName("汉中市");
city.setProvinceId(2);
cityList.add(city);
city= new City();
city.setId(6);
city.setName("咸阳市");
city.setProvinceId(2);
cityList.add(city);
cityMap.put(2, cityList);
cityList = new ArrayList<City>();
city= new City();
city.setId(7);
city.setName("郑州市");
city.setProvinceId(3);
cityList.add(city);
city= new City();
city.setId(8);
city.setName("开封市");
city.setProvinceId(3);
cityList.add(city);
city= new City();
city.setId(8);
city.setName("洛阳市");
city.setProvinceId(3);
cityList.add(city);
cityMap.put(3, cityList);
return SUCCESS;
}
public Map<Integer, List<City>> getCityMap() {
return cityMap;
}
public void setCityMap(Map<Integer, List<City>> cityMap) {
this.cityMap = cityMap;
}
public List<Province> getProvinceList() {
return provinceList;
}
public void setProvinceList(List<Province> provinceList) {
this.provinceList = provinceList;
}
}
struts.xml 配置:
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
"http://struts.apache.org/dtds/struts-2.0.dtd">
<struts>
<include file="struts-default.xml"/>
<package name="doubleListDemo" extends="struts-default">
<action name="doubleSelect" class="tutorial.DoubleListAction">
<result>tagsDoubleSelect.jsp</result>
</action>
</package>
</struts>
页面代码 :
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ taglib prefix="s" uri="/struts-tags"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Struts2 级联下拉菜单示例</title>
</head>
<body>
<s:form name="f1">
<s:set name="foobar"
value="#{'Java': {'Spring', 'Hibernate', 'Struts 2'}, '.Net': {'Linq', ' ASP.NET 2.0'}, 'Database': {'Oracle', 'SQL Server', 'DB2', 'MySQL'}}" />
<s:doubleselect list="#foobar.keySet()" doubleName="technology"
doubleList="#foobar[top]" label="Technology" />
<hr/>
<s:doubleselect list="provinceList" listKey="id" listValue="name"
doubleName="cityId" doubleList="cityMap.get(top.id)"
doubleListKey="id" doubleListValue="name" />
<hr />
</s:form>
<!--
此处要注意的是top的用法,top代表的就是list当前选中的对象, 所以top.id对应的就是当前选中的Province对象中的ID, cityMap.get(top.id)即根据当前选中的Province对象中的ID来取出第二级下拉框的数据集合。
-->
</body>
</html>