SpringMVC对多个同名name参数解析处理

简介: SpringMVC对多个同名name参数解析处理

简洁来说,就是form表单有多个input(checkbox,hidden),name同名,后台是如何接收的。

form表单

<form action="testName.do" method="POST" >
        input1: <input type="text" name="userName"/>
        input2: <input type="text" name="userName"/>
        <input type="submit" value="Submit"/>
</form>

后台使用String接收

如图所示,使用string接收,springmvc会自动将两个name参数值用英文逗号“,”隔开,拼成字符串赋值给参数userName。

后台使用String[]

如图所示,后台使用字符串数组接收,两个name对应参数值自动封装为字符串数组。

效果同下:

String[] parameterValues = request.getParameterValues("userName");

后头使用List接收

@RequestMapping("testName")
public void testName(HttpServletRequest request, HttpServletResponse response, @RequestParam List userName){
    System.out.println(userName);
}

打印结果如下:

[123, 456]

如果不使用@RequestParam或其他注解:

  • 如果定义的是List这种未指定具体类型,则会抛出java.lang.IllegalArgumentException: Cannot generate variable name for non-typed Collection parameter type
  • 如果定义List<String>,则会抛出java.lang.IllegalStateException: No primary or default constructor found for interface java.util.List
  • 如果定义了ArrayList<String>,则这里userName为空。

也就是说SpringMVC内置了转换,可以从一个英文逗号分隔的字符串转换为数组、字符串数组或类型转换系统已知的其他类型。例如一个方法参数@RequestHeader("Accept")可以是String类型,也可以是String[] or List<String>

注意,如果方法没有使用各种注解,如@RequestParam。那么简单类型(由BeanUtils#isSimpleProperty确定)将会被当做已经使用了@RequestParam注解处理。否则的话就会被当做@ModelAttribute处理或使用其他转换器处理。

其他诸如 <input type="checkbox" name="userName" value="123"/> 或者<input type="hidden" name="userName" value="123"/> 处理效果同上。


目录
相关文章
|
15天前
|
安全
BOSHIDA DC电源模块的基本参数解析
BOSHIDA DC电源模块的基本参数解析
BOSHIDA  DC电源模块的基本参数解析
|
16天前
|
前端开发 Java
SpringBoot之数组,集合,日期参数的详细解析
SpringBoot之数组,集合,日期参数的详细解析
13 0
|
8天前
|
分布式计算 DataWorks 调度
DataWorks操作报错合集之DataWorks配置参数在开发环境进行调度,参数解析不出来,收到了 "Table does not exist" 的错误,该怎么处理
DataWorks是阿里云提供的一站式大数据开发与治理平台,支持数据集成、数据开发、数据服务、数据质量管理、数据安全管理等全流程数据处理。在使用DataWorks过程中,可能会遇到各种操作报错。以下是一些常见的报错情况及其可能的原因和解决方法。
22 0
|
9天前
|
分布式计算 大数据 数据处理
MaxCompute操作报错合集之在开发环境中配置MaxCompute参数进行调度,但参数解析不出来,如何解决
MaxCompute是阿里云提供的大规模离线数据处理服务,用于大数据分析、挖掘和报表生成等场景。在使用MaxCompute进行数据处理时,可能会遇到各种操作报错。以下是一些常见的MaxCompute操作报错及其可能的原因与解决措施的合集。
|
13天前
|
canal 缓存 关系型数据库
Spring Boot整合canal实现数据一致性解决方案解析-部署+实战
Spring Boot整合canal实现数据一致性解决方案解析-部署+实战
|
13天前
|
XML 人工智能 Java
Spring Bean名称生成规则(含源码解析、自定义Spring Bean名称方式)
Spring Bean名称生成规则(含源码解析、自定义Spring Bean名称方式)
|
15天前
|
存储 开发者 Python
Python中的argparse模块:命令行参数解析的利器
Python中的argparse模块:命令行参数解析的利器
17 2
|
16天前
|
JSON 前端开发 Java
SpringBoot之JSON参数,路径参数的详细解析
SpringBoot之JSON参数,路径参数的详细解析
13 0
|
16天前
|
前端开发 Java
SpringBoot之实体参数的详细解析
SpringBoot之实体参数的详细解析
14 0
|
26天前
|
XML Java 数据格式
Bean工厂探秘:解析Spring底层工厂体系BeanFactory的神奇之道
Bean工厂探秘:解析Spring底层工厂体系BeanFactory的神奇之道
22 0
Bean工厂探秘:解析Spring底层工厂体系BeanFactory的神奇之道

推荐镜像

更多