struts2 doubleselect示例

doubleselect算是Struts2中稍微复杂点的表单标签, 尤其官方示例比较简单, 没有太大的实用价值.

 

<s:doubleselect label="doubleselect test2" name="menu" list="#{'fruit':'Nice Fruits', 'other':'Other Dishes'}" doubleName="dishes" doubleList="top == 'fruit' ? {'apple', 'orange'} : {'monkey', 'chicken'}" />

 

从这个官方示例中可以看到基本用法, list开头的代表的是第一级下拉框的属性, doubleList开头的则是第二级下拉框. 与select标签的属性基本是对应的.

 

在实际应用中, 我们比较关注的就是list和doubleList这两个属性了, list是存放的第一级下拉框的数据集合, 比如List<FatherBean>, 而doubleList就可以用Map<String, List<SonBean>>来存储, 其中map的键名String与第一级下拉框相关联.

 

现在来展示一个我写的示例:

先写两个javaBean,一般情况下是跟数据库的表相关联的:

package com.student.bean;

public class Province {
int id;
String name;
//set和get方法

}

package com.student.bean;

public class City {
int id;
String name;
int provinceId;
//set和get方法
}

再来写Action,用来往web页面发送数据:

package com.student.action;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import com.opensymphony.xwork2.ActionSupport;
import com.student.bean.Province;
import com.student.bean.City;

public class DoubleSelectAction extends ActionSupport {
private List<Province> provinceList;
private Map<Integer, List<City>> cityMap;

public List<Province> getProvinceList() {
return provinceList;
}

public void setProvinceList(List<Province> provinceList) {
this.provinceList = provinceList;
}

public Map<Integer, List<City>> getCityMap() {
return cityMap;
}

public void setCityMap(Map<Integer, List<City>> cityMap) {
this.cityMap = cityMap;
}

public String execute() throws Exception {
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;

}
}

现在写配置文件:

<action name="doubleSelect" class="com.student.action.DoubleSelectAction">
<result name="success">/tagsDoubleSelect.jsp</result>
</action>

 

最后写显示级联下拉菜单的web页面:

<%@ 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:doubleselect list="provinceList" listKey="id" listValue="name"
doubleName="cityId"
doubleList="cityMap.get(top.id)" doubleListKey="id" doubleListValue="name"/>
</s:form>
</body>
</html>

 

此处要注意的是top的用法,top代表的就是list当前选中的对象, 所以top.id对应的就是当前选中的Province对象中的ID, cityMap.get(top.id)即根据当前选中的Province对象中的ID来取出第二级下拉框的数据集合

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
doubleselect标签是一种用于在网页上实现多级联动选择的HTML标签。它主要用于在下拉菜单中根据用户的选择来动态显示相关选项。 doubleselect标签的使用非常简单。首先,需要在HTML页面中引入相应的脚本库。然后,在合适的位置使用doubleselect标签进行声明。 例如,下面是一个简单的doubleselect标签的代码示例: ``` <select id="firstSelect" name="firstSelect"> <option value="">请选择</option> <option value="option1">选项1</option> <option value="option2">选项2</option> </select> <select id="secondSelect" name="secondSelect"> <option value="">请选择</option> </select> <script type="text/javascript"> new doubleselect("firstSelect", "secondSelect", { "option1": ["子选项1", "子选项2"], "option2": ["子选项3", "子选项4"] }); </script> ``` 上面的代码中,首先我们定义了两个select标签,分别对应第一级和第二级的选择。然后,通过脚本部分的代码进行了doubleselect的初始化。初始化时需要传入两个select标签的id,以及一个对象,该对象中包含了选项的关系。根据选中的第一级选项,第二级的选项会动态更新。 在实际使用中,我们可以根据具体需求进行扩展和定制,例如可以添加更多级的选择,或者在选择过程中执行一些特定操作。 总的来说,doubleselect标签是一个非常有用的HTML标签,能够帮助我们实现动态联动选择功能,提升用户体验。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值