当前位置: 首页 > 知识库问答 >
问题:

如何在Spring boot中从@RequestParam获取映射中的参数列表

况谦
2023-03-14

我有这个endpoint(删除了所有不相关的endpoint),我想看看如何直接从参数映射中获取文件名列表:

  • 第一个@RequestParam是使“file”参数成为必需的,
  • 第二个@RequestParam是将所有参数放入映射中,而不是单独获取

即。:http://localhost:8080/files?file=first

@RequestMapping(path = "/files",
                method = RequestMethod.GET)
public void getFiles(@RequestParam(value = "file",
                                   required = true) String[] files,
                     @RequestParam Map<String, Object> params) {
    for (String file : files) { // this works, all get printed
        logger.info("file: " + file);
    }

    // this, however, only gives the first entry not the whole list
    //
    logger.info("params.get(file): " + params.get("file")); 
}

共有1个答案

姜运珧
2023-03-14

一个映射不能有多个具有相同键的值。由于多个参数具有相同的名称(文件),因此只保留一个值。

要处理具有相同键的多个参数的查询,请使用MultiValueMap

映射接口的扩展,可存储多个值。

 类似资料:
  • 我正在开发Spring Boot应用程序与Spring Data JPA和H2数据库。我使用的是sping-data-jpa。当我使用ManyTo很多映射器类来获取另一个类的数据时。但是我发现它是NULL。 代码在github上 书班 著者班 测试中的测试代码捕捉器。班 我的代码有错误吗?或者其他方式? 非常感谢。

  • 我有多个数组映射。 我想从多个地图中获取重复地图键的列表。 例如 除了遍历所有地图键,检查集合是否包含键,如果不将键添加到集合中,我想不出任何更干净的方法。有没有办法通过streams来实现这一点?

  • 我已经为这些列表创建了模型类,这些列表是我收到的对我的服务的响应 清单1 清单2 列表3是最后的列表,上面两个列表映射的结果,即我的服务的响应 清单3 这些列表与用户名和用户标签相连。我已将列表1的所有值映射到列表3。现在对于列表2,我需要检查每个userLabel是否在list3中存在一个userName等于userLabel的对象,如果为true,则totalUsers的值设置为list3的那

  • 问题内容: 为了验证我收到的数据,我需要确保该长度不会超过数据库列的长度。现在,所有长度信息都存储在Hibernate映射文件中,是否可以通过编程方式访问此信息? 问题答案: 您可以实现,但这并不容易。您可能想要在启动时执行以下操作,并存储值的静态缓存。有很多特殊情况要处理(继承等),但它应适用于简单的单列映射。我可能遗漏了一些instanceof和null检查。

  • 我试图删除一个图像,我得到: 这是docker版本: 但没有额外的信息: 我如何才能获得它声称拥有的从属子映像? 没有具有该映像id的正在运行或已停止的容器。