浅谈s:select 标签中list存放map对象的使用

s:select 标签是 Struts2 框架中用于生成 HTML select 元素的标签,使用 s:select 标签可以方便地生成下拉框。当需要从后台传递一个 List 集合作为下拉框的选项时,可以使用 s:select 标签中的 list 属性,将 List 集合作为 s:select 标签对应的下拉框的选项。

然而,在某些场景下,我们需要将 List 集合替换为复杂的数据结构,例如 Map 集合,这时就需要使用 s:select 标签中 list 属性存储 Map 对象的方式来完成。

使用 s:select 标签中 list 属性存放 Map 数据时,需要注意以下几点:

  1. Map 中的 key 值和 value 值分别表示的是 select 中 option 里面的 value 属性以及 option 中显示的文本值;
  2. list 属性需要使用 Struts 注解 @Action 中的方法返回值进行绑定,该方法必须返回一个 Map 集合;
  3. 在 JSP 页面中使用 s:select 标签时,需要设置 list 属性值为 ⽤于从 Struts2 Action 中返回的 map 数据的 key 值。

下面是一个示例说明:

在 Struts2 的 action 中定义一个返回 Map 对象的方法:

public Map<String,String> getMap(){
    Map<String,String> map = new HashMap<>();
    map.put("apple","苹果");
    map.put("banana","香蕉");
    map.put("orange","橘子");
    return map;
}

在 JSP 页面中使用 s:select 标签,并将 list 属性设置为对应返回的 Map 对象:

<s:select list="map" name="fruit" label="选择水果" headerKey="" headerValue="请选择水果"/>

通过设置 list 属性为 "map",就可以将返回的 Map 对象作为 s:select 标签中选项的来源,生成一个下拉框,下拉框的选项包括了 Map 中的 key:value 对应关系。

下面是另外一个示例:

在 Struts2 的 action 中定义一个返回 List<Map<String,String>> 对象的方法:

public List<Map<String,String>> getListMap(){
    List<Map<String,String>> list = new ArrayList<>();
    Map<String,String> map1 = new HashMap<>();
    map1.put("value","1001");
    map1.put("label","张三");
    Map<String,String> map2 = new HashMap<>();
    map2.put("value","1002");
    map2.put("label","李四");
    Map<String,String> map3 = new HashMap<>();
    map3.put("value","1003");
    map3.put("label","王五");
    list.add(map1);
    list.add(map2);
    list.add(map3);
    return list;
}

在 JSP 页面中使用 s:select 标签,并将 list 属性设置为对应返回的 List<Map<String,String>> 对象

<s:select list="listMap" name="user" label="选择用户" headerKey="" headerValue="请选择用户" listValue="label" listKey="value"/>

通过设置 list 属性为 "listMap",并通过 listValue、listKey 两个属性来设置 value 和 label 的值,就可以将返回的 List<Map<String,String>> 对象作为 s:select 标签中选项的来源,生成一个下拉框,下拉框的选项包括了 List 中的 Map 中的 key:value 对应关系。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:浅谈s:select 标签中list存放map对象的使用 - Python技术站

(0)
上一篇 2023年6月15日
下一篇 2023年6月15日

相关文章

  • MyBatis-Plus拦截器对敏感数据实现加密

    大家好,我是网站的作者,本次将为大家讲解如何对敏感数据实现加密,使用的工具是MyBatis-Plus拦截器。下文将分为以下几个部分: MyBatis-Plus拦截器简介 敏感数据加密的必要性 敏感数据加密的具体实现 示例说明 MyBatis-Plus拦截器简介 MyBatis-Plus是MyBatis的增强工具包,提供了丰富的功能,包括但不限于自动生成代码、…

    Java 2023年5月26日
    00
  • 分享几款linux下常见的vps控制面板

    Linux下有许多VPS(Virtual Private Server,虚拟专用服务器)控制面板可供选择。这些控制面板可以帮助用户通过图形用户界面(GUI)而非命令行来对服务器进行管理。下面将介绍几种在Linux系统下常见的VPS控制面板的安装步骤和使用方法。 1. cPanel cPanel是一个流行的基于Web的Linux控制面板,适用于VPS和独立服务…

    Java 2023年5月19日
    00
  • Struts2在打包json格式的懒加载异常问题

    当使用Struts2进行json数据懒加载时,有可能会遇到打包json格式的异常问题。这种异常通常是由于Struts2缺少正确的json转换器或配置参数导致的。在本文中,将为您详细讲解如何解决这个问题。 1.检查json-lib库 首先要检查的事项是 json-lib 库, 您需要检查您项目中的 json-lib 包是否正常。 json-lib 库是 Str…

    Java 2023年5月20日
    00
  • 什么是并发编程?

    以下是关于什么是并发编程的完整使用攻略: 什么是并发编程? 并发编程是指在多核处理器上,多个线程同时执行不同的任务,从而提高程序的执行效率。在并发编程中,需要考虑多个线程之间的协作和同步,以避免出现数据不一致或者数据污染的问题。 为了实现并发编程,可以采取以下措施: 1. 使用多线程 多线程是实现并发编程的基础,通过多线程可以让多个任务同时执行,从而提高程序…

    Java 2023年5月12日
    00
  • Java util concurrent及基本线程原理简介

    Java util concurrent及基本线程原理简介 线程基本概念 线程是操作系统进行任务调度和执行的基本单位,一个进程可以拥有多个线程。 线程是轻量级的,相对于进程来说占用较少的资源。 线程也是并发编程的基石,不同的线程可以同时执行不同的任务,提高了应用程序的并发性。 线程的状态 新建状态 线程是尚未启动的状态,实例化了一个Thread对象,还未调用…

    Java 2023年5月18日
    00
  • Java使用POI实现导出Excel的方法详解

    首先我们来讲解一下Java使用POI实现导出Excel的方法详解。 一、POI介绍 Apache POI是Apache软件基金会的开源项目,是用于Java编程语言处理Microsoft Office格式文件的开源库。POI提供API给用户对Excel、Word和PowerPoint等文件进行读和写的功能。POI提供了对Excel 97-2003及Excel …

    Java 2023年5月26日
    00
  • 使用Nexus搭建Maven私服的方法步骤

    使用Nexus搭建Maven私服可以帮助团队内部或者企业方便地管理Maven依赖,提高构建的可重复性和稳定性。下面我将为大家详细讲解使用Nexus搭建Maven私服的方法步骤: 一、环境要求 在安装和配置Nexus之前,确保已满足以下要求: Java 8或更高版本已安装并配置好JAVA_HOME环境变量。 为Nexus指定一个非root用户。 shell s…

    Java 2023年5月20日
    00
  • Java Spring AOP详解

    Java Spring AOP详解 什么是 AOP AOP (Aspect-Oriented Programming) 是一种编程思想,它将程序模块化分成维护和开发,可以让我们专注于业务逻辑处理,解决了代码耦合、代码重复等问题。 AOP 的原理就是通过将特性从业务逻辑中分离出来,在运行时动态地将它们与适当的程序节点关联起来。 AOP 的优点 AOP 为项目带…

    Java 2023年5月19日
    00
合作推广
合作推广
分享本页
返回顶部