2013-11-26 2 views
0

내가 parameter.The 메소드는 요청 URL에있을 때, 상기 방법은 잘 작동스프링 MVC 바인딩 요청

/** 
Trying to get the value for request param foo which passes multiple values 

**/ 
@RequestMapping(method=RequestMethod.GET) 
public void performActionXX(HttpServletRequest request, 
         HttpServletResponse response, 
         @RequestParam("foo") String[] foo) { 

...... 
...... 

} 

아래처럼 보이는 요청 값의 배열을 얻을 수있는 스프링 MVC 컨트롤러 메소드를 작성 파라미터 형식 아래

...?foo=1234&foo=0987&foo=5674. 

그러나 요청 URL 서버가 형식 아래에있을 때 반환하는 400 오류

...?foo[0]=1234&foo[1]=0987&foo[2]=5674 

두 번째 형식 요청 URL에 맞추기 위해 메서드를 수정하는 방법에 대한 아이디어가 있으십니까?

+0

왜 이렇게할까요? "foo [0] = 1234 & foo [1] = 0987 & foo [2] = 5674"다른 방법이 아닙니까? 특별한 이유가 있습니까? – fmucar

+0

요청 URL을 제어 할 수 없습니다. – ak123

답변

1

@RequestParam으로는이 작업을 수행 할 수 없습니다. 당신이 할 수있는 일은 구현하고 배열로

...?foo[0]=1234&foo[1]=0987&foo[2]=5674 

같은 요청 매개 변수를 해결하기 위해 수행 HandlerMethodArgumentResolver 자신을 등록 할 수 있습니다. RequestParamMethodArgumentResolver의 코드를 언제든지 체크 아웃하여 Spring이 어떻게 작동하는지 확인할 수 있습니다.

클라이언트가 URL을 만드는 방법을 변경하는 것이 좋습니다. 서버가 API를 정의한다고 가정하고 클라이언트가이를 따르도록되어 있기 때문에 우리는 400 개의 잘못된 요청 상태 코드를 가지고 있습니다.

0

request.getParameterMap()을 사용하여이 문제를 해결했습니다. 다음은 코드입니다.

Map<String,String> parameterMap= request.getParameterMap(); 
    for(String key :parameterMap.keySet()){ 
     if(key.startsWith("nameEntry")){ 
      nameEntryLst.add(request.getParameter(key)); 
     } 
    }