2017-11-21 30 views
2

나는 내 스프링 MVC @Controller에서 다음과 같은 방법이 있습니다스프링 MVC 채울 @RequestParam지도 <문자열, 문자열>

@RequestMapping(method = RequestMethod.GET) 
public String testUrl(@RequestParam(value="test") Map<String, String> test) { 
    (...) 
} 

내가 같이 호출 :

http://myUrl?test[A]=ABC&test[B]=DEF 

을 그러나 "테스트 "RequestParam 변수는 항상 null입니다.

"test "변수를 채우려면 어떻게해야합니까?

답변

1

방법 매개 변수가지도 또는 MultiValueMap 및 매개 변수 이름을 지정하지 않으면 https://docs.spring.io/spring/docs/current/javadoc-api/org/springframework/web/bind/annotation/RequestParam.html

여기에 설명 된대로, 다음지도 매개 변수가 모든 요청 매개 변수의 이름과 값으로 채워집니다.

이렇게 정의를 변경하면됩니다.

@RequestMapping(method = RequestMethod.GET) 
public String testUrl(@RequestParam Map<String, String> parameters) 
{ 
    (...) 
} 

그리고 당신은 http://myUrl?A=ABC&B=DEF

당신은 당신의 방법으로했을 URL을 불리는 경우 매개 변수

parameters.get("A"); 
parameters.get("B"); 
+0

은, 그건 [ABC, DEF (값처럼 우체부 테스트 = "테스트"). 그리고 그것들을 검색 할 때에도 "test [A] = ABC & test [B] = DEF"라는 URL은 "A"가 아니라 "test [A]"를 열쇠로 제공합니다. –

1

봄 같은 이름을 가진 여러 매개 변수의 디폴트 변환 전략을 가지고 있지 않습니다 HashMap. 그러나 목록, 배열 또는 집합으로 쉽게 변환 할 수 있습니다.

@RequestMapping(value = "/testset", method = RequestMethod.GET) 
    public String testSet(@RequestParam(value = "test") Set<String> test) { 

     return "success"; 
    } 

나는 http://localhost:8080/mappings/testset?test=ABC&test=DEF

당신은 데이터를 가지고 설정이 표시됩니다, 내가 추가 한 이유

나는 모든 요청 매개 변수를 검색 할 필요가 없습니다
+0

List가 필요하지는 않지만 Map . 즉, 사용자 정의 편집기를 만들어야 만합니까? –