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

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

@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。A MultiValueMap或多或少是a Map<String,

List<String>>,因此具有相同名称(dc1Server,dc2Server等)的参数将在同一列表中。您将使用它来获取传递的参数的完整列表,如下所示:

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

然后,您将拥有3个键,其中dc1Server将包含所有dc1Server数据,dc2Server所有dc2Server等

@ModelAttribute如果要直接映射到域对象,可以考虑使用:链接

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]);

}

}

以上是 如何使用Spring MVC为每个对象传递列表参数? 的全部内容, 来源链接: utcz.com/qa/398303.html

回到顶部