请求响应:常见参数接收及封装(数组集合参数及日期参数)

数组参数

在前端页面的表单中,存在复选框元素,当提交表单到后端的时候,会将复选框中的全部内容提交到后端进行处理,由于复选框中往往存在很多数据,并且同复选框中数据名称相同,这样的请求参数叫做数组参数:请求参数名相同并且请求参数为多个,这样的请求参数就是数组参数, 此时想要在后端正确接收到这些数组参数,就需要使用数组(或集合)。

这三个同名的hobby参数就是数组参数。

通过数组接收

可以在后端通过定义数组类型的形参接收。

java 复制代码
@RequestMapping("/hobbies")
public String getArrayParameter(String[] hobby) {
    for (String hobbies : hobby) {
        System.out.println(hobbies);
    }
    return "successful";
}

因为请求参数是数组参数,所以说通过方法形参中的hobby数组就可以全部接收请求参数,(注意:形参数组名必须和请求参数名一致,否则无法正确接收) 接收了这些数组参数后封装为了数组,便于使用:

通过集合接收

对于数组参数,还可以使用集合进行接收,其原理和通过数组接收是一样的,但是使用集合参数接收时,需要在方法形参前使用注解@RequestParam来绑定参数关系,因为数组参数默认是使用数组接收的,并且若集合名和参数名相同,则@RequestParam不需要指定属性,若不同则需要用name属性绑定正确的参数对应关系:

java 复制代码
@RequestMapping("/listParameter")
public String getListParameter(@RequestParam List<String> hobby) {
    for (String s : hobby) {
        System.out.println(s);
    }
    System.out.println("用集合成功接收数组参数");
    return "successful";
}

通过集合也成功接收到了数组请求参数,但是特别注意:因为默认是使用数组接收数组参数,所以说当使用集合进行接收时需要使用@RequestParam注解绑定参数关系。

日期参数

前端经常会传递一些日期时间类型的参数,比如:用户生日、入职日期、操作时间等,这些都是很常见的情况,这些时间参数可以根据需要接收并封装到Date或LocalDateTime等时间类中使用,但是由于日期的格式多种多样,服务端不好判断,所以说在接收的时候需要使用@DateTimeFormat注解中的pattern属性指定接收的日期格式是什么样子的 (@DateTimeFormat中pattern中的日期格式必须和前端传递的日期格式相同,否则无法成功接收)。

假设前端传递的时间参数是:2024-12-04 21:05:00,那么@DateTimeFormat的pattern就应该是:yyyy-MM-dd HH:mm:ss,这样才可以成功接收到这个时间参数。

java 复制代码
@RequestMapping("/date")
public String getDateParameter(@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") LocalDateTime time) {
    System.out.println(time);
    return "现在时间是" + time;
}

注意:pattern中的时间格式必须和时间参数的格式完全一致,否则直接报错,并且接收日期参数的形参名也必须和传递的时间参数完全一致,否则也无法成功接收。

相关推荐
fatfishccc26 分钟前
Spring MVC 全解析:从核心原理到 SSM 整合实战 (附完整源码)
java·spring·ajax·mvc·ssm·过滤器·拦截器interceptor
没有bug.的程序员35 分钟前
MyBatis 初识:框架定位与核心原理——SQL 自由掌控的艺术
java·数据库·sql·mybatis
执键行天涯1 小时前
从双重检查锁定的设计意图、锁的作用、第一次检查提升性能的原理三个角度,详细拆解单例模式的逻辑
java·前端·github
程序员江鸟1 小时前
Java面试实战系列【JVM篇】- JVM内存结构与运行时数据区详解(私有区域)
java·jvm·面试
回家路上绕了弯1 小时前
ClickHouse 深度解析:从核心特性到实战应用,解锁 OLAP 领域新势能
数据库·后端
架构师沉默1 小时前
Java 状态机设计:替代 if-else 的优雅架构
java·程序员·架构
java亮小白19971 小时前
Spring Cloud 快速通关之Sentinel
java·spring cloud·sentinel
atwednesday1 小时前
大规模文档预览的架构设计与实现策略
java
xiaok2 小时前
本地用VScode的Live Server监听5500访问页面,ubuntu上不需要在配置5500
后端
雨绸缪2 小时前
ABAP 时间戳
后端