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

数组参数

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

这三个同名的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中的时间格式必须和时间参数的格式完全一致,否则直接报错,并且接收日期参数的形参名也必须和传递的时间参数完全一致,否则也无法成功接收。

相关推荐
组合缺一2 分钟前
用 ChatModel 构建 LLM 驱动的 Java 应用
java·开发语言·ai·llm·solon·rag
长明3 分钟前
C#项目组织与概念梳理
后端·c#
xn71338 分钟前
个人网站站外分发怎么做归因?我给 XBSTACK 补了一套 UTM 追踪规则
后端·低代码
zzz_236810 分钟前
【Java实习面试算法冲刺】哈希!
java·算法·面试
用户23307130747911 分钟前
JUC 并发容器与工具
后端
零点零一17 分钟前
QT 5升级到 Qt 6 使用 Clazy 检查将 C++ 应用程序移植到 Qt 6
开发语言·c++·qt
带刺的坐椅20 分钟前
ReActAgent 使用指南:构建会思考、能行动的 AI Agent
java·ai·llm·solon·loop·react-agent
caimouse22 分钟前
reactos 测试安装32位微信失败的日志
开发语言·微信
爱奥尼欧26 分钟前
轻量级可扩展日志框架-异步日志与系统集成
开发语言·数据库·c++·学习
大圣编程29 分钟前
python break语句
开发语言·前端·python