gpt4 book ai didi

java - 如何使用 Spring MVC 为每个对象传递列表参数?

转载 作者:行者123 更新时间:2023-11-30 11:22:06 25 4
gpt4 key购买 nike

我在这里为 GET 参数使用 Spring MVC RequestMapping。以下是我的代码 -

@RequestMapping(value = "index", method = RequestMethod.GET)
public HashMap<String, String> handleRequest(@RequestParam("dc1Servers") String dc1Servers, @RequestParam("dc2Servers") String dc2Servers, @RequestParam("dc3Servers") String dc3Servers) {
HashMap<String, String> model = new HashMap<String, String>();
String helloWorld = "Hello World!";
model.put("greeting", helloWorld);

System.out.println(dc1Servers);
System.out.println(dc2Servers);
System.out.println(dc3Servers);

return model;
}

我正在点击这个 URL - http://127.0.0.1:8080/dataweb/index?dc1Servers=3&dc2Servers=3&dc3Servers=3 然后它进入上面的代码并打印出 3 在控制台上用于所有打印并且工作正常。

现在,如果你看到,我有 dc1dc2dc3

所以对于 dc1,我想将这些作为参数发送到 URL 中-

dc1Servers=3

dc1HostA
dc1HostB
dc1HostC

dc1IPAddresssA
dc1IPAddresssB
dc1IPAddresssC

dc2 类似,我想将这些作为参数发送到 URL 中-

dc2Servers=3

dc2HostA
dc2HostB
dc2HostC

dc2IPAddresssA
dc2IPAddresssB
dc2IPAddresssC

dc3 类似,我想将这些作为参数发送到 URL 中-

dc3Servers=3

dc3HostA
dc3HostB
dc3HostC

dc3IPAddresssA
dc3IPAddresssB
dc3IPAddresssC

现在我不确定如何为这个用例构建一个 URL,我的方法会是什么样子?我想通过一个 URL 调用发送它们。

这个用例可以使用 Spring MVC 来完成吗?

最佳答案

您可以按照您认为合适的任何方式传递参数,一种方法是按它们的自然分组传递它们,如下所示:http://127.0.0.1:8080/dataweb/index?dc1Server=dc1HostA,dc1IPAddressA&dc1Server=dcHostB,dc1IPAddressB....

通过为每个组使用相同的参数名称,您需要使用 MultiValueMap . MultiValueMap或多或少是一个Map<String, List<String>> ,因此具有相同名称(dc1Server、dc2Server 等)的参数将在同一个列表中。您将使用它来获取您传入的参数的完整列表,如下所示:

public HashMap<String, String> handleRequest(@RequestParam MultiValueMap<String,String> allRequestParams) 

那么您将拥有 3 个 key ,dc1Server将包含所有 dc1Server 数据,dc2Server一切dc2Server等

可以考虑使用 @ModelAttribute如果你想直接映射到域对象:Link

编辑

public void testSpringMultiValueMap() {
MultiValueMap<String, String> map = new LinkedMultiValueMap<String, String>();
map.add("dc1Server", "dc1HostA,dc1IPAddressA");
map.add("dc1Server", "dc1HostB,dc1IPAddressB");
map.add("dc1Server", "dc1HostC,dc1IPAddressC");
map.add("dc2Server", "dc2HostA,dc2IPAddressA");
map.add("dc2Server", "dc2HostB,dc2IPAddressB");
map.add("dc2Server", "dc2HostC,dc2IPAddressC");

List<String> dc1List = map.get("dc1Server");

for(String pair: dc1List) {
String[] tokens = pair.split(",");
System.out.println("host: " + tokens[0] + " ip: " + tokens[1]);
}
}

关于java - 如何使用 Spring MVC 为每个对象传递列表参数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21923857/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com