2011-12-05 5 views
1

우리는 Spring Web MVC를 사용하여 간단한 휴식 API를 구현하고있다. 핸들러 중 하나는 ID라는 int 매개 변수를 요청 매개 변수로 사용합니다.Spring-MVC Rest API 핸들러에서의 커스텀 인수 변환

@RequestMapping(value="/requestEntity", 
    method=RequestMethod.GET) 
public ModelMap getEntity(
    @PathVariable(value="id")final Integer id, 
    HttpServletResponse response) throws IOException { 

내가 요청 객체는 문자열로 요청 파라미터 값을 갖는 것을 알 (NAME1 = VALUE1 & NAME2 = 22) 및 그것의 파라미터로 ID를 가질 때, 핸들러 마술 int를받을 것이다. 우리는 입력으로서 값 "1 2 3"을 보내면 우리 보내면

"/requestEntity", id="5" -> getEntity(5); 

불행히도, 우리는 인수로 번호 (123)를 얻을 5 "123"우리는 인수로 (5)를 얻는다.

"/requestEntity", id="1 2 3" -> getEntity(123); // WRONG -- we want to throw an error 
"/requestEntity", id="5;123" -> getEntity(5); // ALSO WRONG 

내가 알 수있는 한, Spring은 문자열 매개 변수 값을 처리기가 필요로하는 int 인수로 변환하는 변환을 수행하고 있습니다. 자체의 인수 변환기를 어떻게 구현할 수 있습니까?

답변

0

이 질문과 비슷한 문제인 것처럼 보입니다 : Spring @MVC and @RequestParam validation. 두 가지 답변/해결 방법이 있습니다. 먼저이 방법을 시도해보십시오.

@RequestMapping 
public void handleRequest(HttpServletRequest request) { 
    int page = ServletRequestUtils.getIntParameter(request, "page", 1); 
}