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来取出第二级下拉框的数据集合
分享到:
相关推荐
`doubleselect`标签是Struts2提供的一个特殊标签,用于创建具有两个级联选择框的用户界面,通常用于父类别与子类别之间的关联选择,如在上述例子中的部门与人员选择。 在`doubleselect`标签中,`list`属性用于指定...
Struts2 Doubleselect标签是用于创建二级联动下拉列表的,这种控件在网页表单中常见于需要显示层次关系数据的场景,例如省份-城市的选择。Doubleselect标签结合了两个下拉列表,其中一个的选择会影响到另一个下拉...
在本篇文章中,我们将深入探讨Struts2框架中的`doubleselect`标签的使用方法,并结合一个具体的示例来展示如何将此标签与Hibernate和Spring框架整合在一起,以便于更好地理解和运用这一技术。 ### Struts2框架简介 ...
在本文中,我们将深入探讨如何使用ExtJS 4和Struts2框架实现省市区三级联动的完整示例。这个示例适用于需要在Web应用程序中实现地理区域选择功能的情况,例如用户地址输入。以下是对该技术栈及其实现方法的详细说明...
在Struts2框架中,`doubleselect`标签是用于创建一对多选择的HTML元素,通常表现为两个下拉列表,其中一个选项的选择会影响到另一个下拉列表的选项显示。这个标签使得用户在前端界面可以方便地进行关联数据的选择,...
作者处处从实战出发,在丰富的示例中直观地探讨了许多实用的技术,如数据类型转换、文件上传和下载、提高Struts 2应用的安全性、调试与性能分析、FreeMarker、Velocity、Ajax,等等。跟随作者一道深入Struts 2,聆听...
### Struts2标签详解及具体实例解析 #### 一、概述 Struts2是一个基于MVC模式的开源框架,它提供了丰富的标签库来简化Web应用的开发过程。这些标签不仅功能强大,而且易于使用,可以帮助开发者快速构建动态网页。...
### Struts2中doubleselect标签实现省市联动案例详解 #### 一、背景介绍 在Web应用开发中,经常需要处理一些具有层级关系的数据选择问题,比如中国的省市县选择。为了提高用户体验并简化开发过程,Struts2框架提供...
Struts2还增加了如datepicker、doubleselect、timepicker、optiontransferselect等常用控件,极大地丰富了开发者在项目中的选择。 1. `<s:form>` 标签用于创建表单,可以指定action属性来指定提交的Action,method...
### Struts2常用标签详解 #### 一、概述 Struts2框架作为一款成熟的Web应用开发框架,在Java Web开发领域有着广泛的应用。Struts2框架提供了丰富的标签库,这些标签可以极大地方便开发者进行Web页面的开发工作。...
### Struts2 标签大全解析 #### 一、概述 Struts2 是一款流行的 Java Web 开发框架,它提供了一系列强大的标签库来简化前端页面的开发工作。这些标签不仅功能强大,而且易于使用,可以帮助开发者快速构建动态的...
### JSP_Struts2标签详解 #### 一、引言 在Java Web开发领域,Struts2框架因其灵活且强大的特性而备受青睐。Struts2提供了丰富的标签库,这些标签不仅可以帮助开发者简化JSP页面的编写工作,还能提高程序的执行效率...
书中介绍了如何利用Struts 2 来解决Web 应用开发中的常见问题,同时还深入浅出地探讨了许多能帮助程序员编写Struts 2 应用程序的技巧,如管理页面导航活动、输入验证、国际化和本地化、对Ajax 的支持,等等。...
### JSP_Struts2标签详解 #### 一、引言 在Java Web开发领域中,Struts2框架凭借其强大的功能和灵活性深受开发者喜爱。为了更高效地进行表单处理和页面展示,Struts2提供了丰富的标签库。本文将详细介绍JSP_Struts...
### Struts2 标签详解:表单UI与非表单UI #### 一、概述 Struts2作为Java Web开发中的一个重要框架,为开发者提供了丰富的标签库来简化Web页面的构建过程。根据官方文档所述,“UI标签又可以分为表单UI和非表单UI...
### Struts2 标签详解 #### 一、概述 Struts2 是一款基于 Java 的企业级应用开发框架,它提供了丰富的标签库来简化前端页面的开发工作。这些标签不仅功能强大,而且易于使用,可以帮助开发者高效地创建复杂的用户...
在Struts2中,`doubleselect`标签是一个非常实用的功能,它允许用户在两个级联的下拉列表中进行选择,通常用于处理层级数据,如分类和子分类,或者部门和员工等关系。 在描述中提到的官方示例虽然展示了`...