arrays - Spring MVC + RequestParam 作为 Map + 获取 URL 数组参数不起作用

标签 arrays list spring-mvc dynamic parameters

我目前正在开发 API Controller 。该 Controller 应该能够捕获任何未知 - 参数并将其放入 Map 中。目的。现在我使用此代码来捕获所有参数并将它们放入 Map

public String processGetRequest(final @RequestParam Map params)

现在我调用的url如下:

server/api.json?action=doSaveDeck&Card_IDS[]=1&Card_IDS[]=2&Card_IDS[]=3

然后我使用这段代码打印出参数,以进行调试:

if (logger.isDebugEnabled()) {
    for (Object objKey : params.keySet()) {
        logger.debug(objKey.toString() + ": " + params.get(objKey));
    }
}

结果是:

10:43:01,224 DEBUG ApiRequests:79 - action: doSaveDeck
10:43:01,226 DEBUG ApiRequests:79 - Card_IDS[]: 1

但是预期的结果应该是这样的:

10:43:XX DEBUG ApiRequests:79 - action: doSaveDeck
10:43:XX DEBUG ApiRequests:79 - Card_IDS[]: 1
10:43:XX DEBUG ApiRequests:79 - Card_IDS[]: 2
10:43:XX DEBUG ApiRequests:79 - Card_IDS[]: 3

或者至少告诉我 Card_IDS 是 String[] / List<String>因此应该被类型转换。我还尝试将参数转换为 List<String>手动但这也不起作用:

for (Object objKey : params.keySet()) {
    if(objKey.equals(NameConfiguration.PARAM_NAME_CARDIDS)){ //Never reaches this part
        List<String> ids = (List<String>)params.get(objKey); 

        for(String id : ids){
            logger.debug("Card: " + id);
        }
    } else {
        logger.debug(objKey + ": " + params.get(objKey));
    }
}

有人可以告诉我如何获取数组Card_IDS - 它必须是动态的 - 来自Map params通过使用NameConfiguration.PARAM_NAME_CARDIDS

最佳答案

当您请求Map时注释为 @RequestParam Spring 创建一个包含所有请求参数名称/值对的映射。如果有两对具有相同的名称,则 map 中只能有一对。所以它本质上是一个 Map<String, String>

您可以通过 MultiValueMap 访问所有参数:

public String processGetRequest(@RequestParam MultiValueMap parameters) {

这张 map 本质上是一个Map<String, List<String>> 。因此具有相同名称的参数将位于同一列表中。

关于arrays - Spring MVC + RequestParam 作为 Map + 获取 URL 数组参数不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16355168/

相关文章:

javascript - 如何使表格行可单击以显示隐藏的行内容?

arrays - 如何在 Julia 中使用数组和参数 NTuple 的联合作为函数参数类型?

java - Java中的循环链表,何时指向第一个节点?

spring-mvc - spring 安全与某些东西的冲突(也许是 spring mvc)

jquery - 在 modelAndView 中嵌入 PDF

java - 如何使用二分查找获得更多的搜索数据?

sql - 从 JsonB 数组中删除数字项

c - 在条件 (C) 下删除链表的节点

python - Python 列表切片的空间复杂度

java - @Secured 服务方法和 spring ws