您可以按照自己认为合适的任何方式传递参数,一种方法是按如下所示的自然分组传递参数:
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]); } }


