`
hilor
  • 浏览: 27657 次
  • 性别: Icon_minigender_1
  • 来自: 武汉
最近访客 更多访客>>
社区版块
存档分类
最新评论

Struts2中的doubleselect使用

阅读更多

因为项目需要用到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标签的应用

    通过上述分析,我们可以看到Struts2中的`doubleselect`标签是一个非常有用的工具,它可以简化前端页面上多级选择框的设计与实现。同时,通过与Hibernate和Spring框架的整合,可以实现从前端到后端整个流程的自动化...

    struts2 标签 doubleselect动态 用法

    `doubleselect`标签是Struts2提供的一个特殊标签,用于创建具有两个级联选择框的用户界面,通常用于父类别与子类别之间的关联选择,如在上述例子中的部门与人员选择。 在`doubleselect`标签中,`list`属性用于指定...

    Struts2级联doubleselect

    在Struts2中,级联(Cascading)功能主要用于处理关联数据,例如一个国家对应多个城市,一个城市对应多个区,这种层级关系的数据在用户界面中通常通过级联选择框(dropdown list)来呈现。Doubleselect是Struts2提供...

    struts2 doubleselect标签的用法例子

    在Struts2中,`doubleselect`标签是一个非常实用的组件,用于创建级联选择列表,即两个下拉列表之间存在关联,当用户在一个下拉列表中选择一个选项时,另一个下拉列表会根据所选值动态更新其选项。这种功能在处理如...

    Struts2的doubleselect标签演示

    1. **Action类**:在Struts2中,Action类是业务逻辑的载体,它负责处理用户的请求并返回结果。我们需要在Action类中定义相关的属性和方法,用于获取和设置数据,以及处理业务逻辑。 2. **Result类型**:当Action...

    struts2 doubleselect 实例

    在Struts2中,`&lt;s:doubleselect&gt;`标签的主要属性包括: 1. `label`:定义了标签的显示文本。 2. `name`:定义了表单字段的名称,用于后台接收数据。 3. `list`:表示一级下拉列表的数据源,通常是一个列表或数组,...

    j2ee-struts2-Select_DoubleSelect.rar_struts2 doubleselect

    在Struts2中,我们有许多内置的标签来帮助开发者更方便地处理表单元素,例如`&lt;s:select&gt;`和`&lt;s:doubleselect&gt;`就是其中两个用于创建下拉列表的标签。下面我们将详细探讨这两个标签以及如何在J2EE项目中使用它们。 1...

    struts2中的doubleSelect标签的用法(从数据库中读取数据,HSS)

    接下来,我们重点介绍如何在Struts2中使用`doubleSelect`标签。 - **标签的基本用法**:`doubleSelect`标签用于创建两个下拉列表,第一个列表用来选择某个项,第二个列表则显示根据第一个列表所选项而动态改变的项...

    struts2地市、县区二级联动下拉菜单 doubleselect标签

    在Struts2中,`doubleselect`标签就是为了解决这类问题而设计的。 `doubleselect`标签是Struts2自定义标签库的一部分,它允许开发者创建两个相关的下拉列表,当用户在第一个下拉框选择一个选项时,第二个下拉框的...

    Struts2-Double-Select-Example

    3. **创建JSP页面**:创建一个JSP页面(如double_select.jsp),使用Struts2的标签库来渲染表单。包括两个`&lt;s:select&gt;`标签,一个用于父级,一个用于子级。例如: ```jsp &lt;s:form action="doubleSelect"&gt; 请选择....

    extjs+struts2省市区三级联动完整示例

    在本文中,我们将深入探讨如何使用ExtJS 4和Struts2框架实现省市区三级联动的完整示例。这个示例适用于需要在Web应用程序中实现地理区域选择功能的情况,例如用户地址输入。以下是对该技术栈及其实现方法的详细说明...

    struts2源代码分析

    ActionProxy是Struts2中的一个重要组件,因为它封装了Action的实例化和调用过程。通过ActionProxy,开发者可以实现更复杂的逻辑,如动态Action映射或延迟加载Action。 Struts2的视图组件被封装在`org.apache.struts...

    Struts2源码分析

    `Dispatcher`类在Struts2中扮演着重要角色,它负责框架的初始化和Action的执行。`FilterDispatcher`则是一个Servlet Filter,根据配置文件来决定哪些请求需要经过Struts2处理。如果配置不当,可能会导致问题,如将...

    Struts2工作机制

    Struts2中的`ValueStack`是一个对象容器,用于在Action和视图之间传递数据。Action的属性可以直接在视图中通过OGNL(Object-Graph Navigation Language)表达式访问,简化了视图和模型之间的数据交互。 7. **配置...

    doubleselect.doc

    ### Struts2中doubleselect标签实现省市联动案例详解 #### 一、背景介绍 在Web应用开发中,经常需要处理一些具有层级关系的数据选择问题,比如中国的省市县选择。为了提高用户体验并简化开发过程,Struts2框架提供...

    Struts2的总结和Strut2集成Spring

    OGNL(Object-Graph Navigation Language)是Struts2中使用的表达式语言,用于访问Java对象的属性和调用方法,增强了视图层的表达能力和灵活性。 #### 表达式语言主要好处 OGNL的主要好处包括简洁的语法、强大的...

    Struts2的工作机制及分析

    视图组件在Struts2中得到了增强,例如,Struts2提供了一系列组件如updownselect、doubleselect、datetimepicker、token和tree等,这些组件增强了用户体验并简化了视图层的开发。视图组件支持主题(theme)功能,允许...

Global site tag (gtag.js) - Google Analytics