因为项目需要用到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<DataBean>, 而doubleList就可以用Map<String, List<DataBean>>来存储, 其中map的键名String与第一级下拉框相关联.
例:
两个DataBean
public class Father {
int id;
String name;
//getter and setter
}
public class Son {
int id;
String name;
int fatherId;
//getter and setter
}
Action:
public class DemoAction {
private List<Father> fatherList;
private Map<Integer, List<Son>> sonMap;
public String execute() throws Exception {
fatherList= new ArrayList<Father>();
Father father;
father= new Father();
father.setId(1);
father.setName("Test");
fatherList.add(father);
father = new Category();
father.setId(2);
father.setName("Test2");
fatherList.add(father);
sonMap = new HashMap<Integer, List<Son>>();
List<Son> sonList = new ArrayList<Son>();
Son son;
son= new Book();
son.setId(1);
son.setName("SonTest");
son.setFatherId(1);
sonList.add(son);
son= new Book();
son.setId(2);
son.setName("SonTest2");
son.setFatherId(1);
sonList.add(son);
sonMap.put(1, sonList);
sonList = new ArrayList<Son>();
son= new Book();
son.setId(3);
son.setName("SonTest3");
son.setFatherId(2);
sonList.add(son);
son= new Book();
son.setId(4);
son.setName("SonTest4");
son.setFatherId(2);
sonList.add(son);
sonMap.put(2, sonList);
return SUCCESS;
}
// getter and setter..
}
JSP:
<s:doubleselect list="fatherList" listKey="id" listValue="name"
doubleName="sonId" doubleList="sonMap.get(top.id)" doubleListKey="id" doubleListValue="name"
theme="simple"/>
此处要注意的是top的用法,top代表的就是list当前选中的对象, 所以top.id对应的就是当前选中的Fahter对象中的ID, sonMap.get(top.id)即根据当前选中的Fahter对象中的ID来取出第二级下拉框的数据集合
分享到:
相关推荐
通过上述分析,我们可以看到Struts2中的`doubleselect`标签是一个非常有用的工具,它可以简化前端页面上多级选择框的设计与实现。同时,通过与Hibernate和Spring框架的整合,可以实现从前端到后端整个流程的自动化...
`doubleselect`标签是Struts2提供的一个特殊标签,用于创建具有两个级联选择框的用户界面,通常用于父类别与子类别之间的关联选择,如在上述例子中的部门与人员选择。 在`doubleselect`标签中,`list`属性用于指定...
在Struts2中,级联(Cascading)功能主要用于处理关联数据,例如一个国家对应多个城市,一个城市对应多个区,这种层级关系的数据在用户界面中通常通过级联选择框(dropdown list)来呈现。Doubleselect是Struts2提供...
在Struts2中,`doubleselect`标签是一个非常实用的组件,用于创建级联选择列表,即两个下拉列表之间存在关联,当用户在一个下拉列表中选择一个选项时,另一个下拉列表会根据所选值动态更新其选项。这种功能在处理如...
1. **Action类**:在Struts2中,Action类是业务逻辑的载体,它负责处理用户的请求并返回结果。我们需要在Action类中定义相关的属性和方法,用于获取和设置数据,以及处理业务逻辑。 2. **Result类型**:当Action...
在Struts2中,`<s:doubleselect>`标签的主要属性包括: 1. `label`:定义了标签的显示文本。 2. `name`:定义了表单字段的名称,用于后台接收数据。 3. `list`:表示一级下拉列表的数据源,通常是一个列表或数组,...
在Struts2中,我们有许多内置的标签来帮助开发者更方便地处理表单元素,例如`<s:select>`和`<s:doubleselect>`就是其中两个用于创建下拉列表的标签。下面我们将详细探讨这两个标签以及如何在J2EE项目中使用它们。 1...
接下来,我们重点介绍如何在Struts2中使用`doubleSelect`标签。 - **标签的基本用法**:`doubleSelect`标签用于创建两个下拉列表,第一个列表用来选择某个项,第二个列表则显示根据第一个列表所选项而动态改变的项...
在Struts2中,`doubleselect`标签就是为了解决这类问题而设计的。 `doubleselect`标签是Struts2自定义标签库的一部分,它允许开发者创建两个相关的下拉列表,当用户在第一个下拉框选择一个选项时,第二个下拉框的...
3. **创建JSP页面**:创建一个JSP页面(如double_select.jsp),使用Struts2的标签库来渲染表单。包括两个`<s:select>`标签,一个用于父级,一个用于子级。例如: ```jsp <s:form action="doubleSelect"> 请选择....
在本文中,我们将深入探讨如何使用ExtJS 4和Struts2框架实现省市区三级联动的完整示例。这个示例适用于需要在Web应用程序中实现地理区域选择功能的情况,例如用户地址输入。以下是对该技术栈及其实现方法的详细说明...
ActionProxy是Struts2中的一个重要组件,因为它封装了Action的实例化和调用过程。通过ActionProxy,开发者可以实现更复杂的逻辑,如动态Action映射或延迟加载Action。 Struts2的视图组件被封装在`org.apache.struts...
`Dispatcher`类在Struts2中扮演着重要角色,它负责框架的初始化和Action的执行。`FilterDispatcher`则是一个Servlet Filter,根据配置文件来决定哪些请求需要经过Struts2处理。如果配置不当,可能会导致问题,如将...
Struts2中的`ValueStack`是一个对象容器,用于在Action和视图之间传递数据。Action的属性可以直接在视图中通过OGNL(Object-Graph Navigation Language)表达式访问,简化了视图和模型之间的数据交互。 7. **配置...
### Struts2中doubleselect标签实现省市联动案例详解 #### 一、背景介绍 在Web应用开发中,经常需要处理一些具有层级关系的数据选择问题,比如中国的省市县选择。为了提高用户体验并简化开发过程,Struts2框架提供...
OGNL(Object-Graph Navigation Language)是Struts2中使用的表达式语言,用于访问Java对象的属性和调用方法,增强了视图层的表达能力和灵活性。 #### 表达式语言主要好处 OGNL的主要好处包括简洁的语法、强大的...
视图组件在Struts2中得到了增强,例如,Struts2提供了一系列组件如updownselect、doubleselect、datetimepicker、token和tree等,这些组件增强了用户体验并简化了视图层的开发。视图组件支持主题(theme)功能,允许...