2012-04-03 2 views
0

@RequestMethod 방법 매개 변수 (아마도에 의해 @RequestParam 속성)의 목록을 얻는 방법 :의 매개 변수의 목록을 가져스프링 MVC - 나는 다음과 같은 방법으로 스프링 MVC 컨트롤러가

@RequestMapping(value = {"/filter"}, method = RequestMethod.GET) 
    @ResponseBody 
    public List<MetricType> getMetricTypes( 
      @RequestParam(value = "subject", required = false) Long subjectId, 
      @RequestParam(value = "area", required = false) Long areaId, 
      @RequestParam(value = "onlyImmediateChildren", required = false) Boolean onlyImmediateChildren, 
      @RequestParam(value = "componentGroup", required = false) Long componentGroupId  
      ) throws Exception 
    { 
     //Some code 
    } 

가 가능을 현재 메서드는 프로그래밍 방식으로 (예 : @RequestParam 주석으로)? 솔루션은 디버그 기호없이 작동해야합니다. 필요한 경우 메서드 이름을 하드 코드 할 수 있습니다.

쿼리 문자열에 잘못된 매개 변수 (예 : 오타 때문에)가 있는지 확인하려고합니다. 요청의 쿼리 매개 변수 이름을 메서드 서명의 쿼리 매개 변수 이름 (가능한 경우)과 비교해 보겠습니다.

업데이트]

솔루션뿐만 아니라 (거짓 = 필수) 선택적 매개 변수에 대한 작동합니다.

많은 감사

맥심

+0

왜 typo'ed 매개 변수를 사용 하시겠습니까? 모든 매개 변수가 웹 응용 프로그램과 통신하는 웹 사이트에 하드 코드 될 가능성이 높습니다. 한 번 입력하고 올바르게 입력하십시오! – Geerten

+0

타이핑 된 매개 변수를 거부하고 싶습니다. param 이름에 오타가있는 경우 오류 메시지를 표시하려고합니다. 이를 수행하기 위해 사용자가 전달한 매개 변수를 메소드 서명과 비교하고자합니다. –

+0

RequestMapping은 이미 오타가있는 매개 변수를 거부합니다. 비교할 때 어떤 이점이 있습니까? – Geerten

답변

2

당신은 HttpServletRequest request 다음

public List<MetricType> getMetricTypes( 
      @RequestParam(value = "subject", required = false) Long subjectId, 
      @RequestParam(value = "area", required = false) Long areaId, 
      @RequestParam(value = "onlyImmediateChildren", required = false) Boolean onlyImmediateChildren, 
      @RequestParam(value = "componentGroup", required = false) Long componentGroupId , 
HttpServletRequest request 
      ) throws Exception 

으로는

request.getParameterNames() 

모든 요청 매개 변수의 이름을 얻을 할 그들 루프를 사용하여 사용할 수 있습니다 귀하의 직업은

입니다.
for (String parameterName:requestParameterNames){ 

} 
+0

귀하의 기여에 감사드립니다. "요청에 전달 된 매개 변수의 실제 목록이 아닌 ** 현재 매개 변수의 ** 매개 변수 목록을 가져올 수 있습니까?" 메서드 서명 (@RequestParam 주석을 사용하여)에서 매개 변수 목록을 가져와야합니다. –

+0

수동으로 수행하십시오. 당신은 당신이 알고있는 모든 매개 변수들을 가진 클래스를 생성 할 수 있고 @ModelAttribute를 사용할 수있다. –