2017-11-27 6 views
-1

봄 작동 방식을 이해하려고합니다. 폼과 컨트롤러를 만들었습니다. 의도적으로 요청 매개 변수와 일치하지 않는 메서드에 param을 추가했는데 아래와 같은 오류가 발생합니다.HTTP 상태 400 - 필요한 문자열 매개 변수 'testParam'이 봄 MVC에 없습니다.

HTTP 상태 400 - 필수 String 매개 변수 'testParam는'

@RequestMapping("/processForm") 
public String processForm(@RequestParam("testParam") String title, 
     Model model){ 

    return "formResult"; 
} 

<form action="processForm" method="GET" > 
    <input type="text" name="hello" /> 
    <input type="submit" /> 
</form> 

"testParam"입니다 requestParam 존재하지 여기에 필수가 그래서 난이 오류가 있습니다. 제 질문은이 오류가 어디에서 처리되었는지입니다. dispatcherServlet이 메소드를 확인하고 404를 즉시 반환했는지 또는 컨트롤러의 메소드로 전달하려고 시도했는데 오류가 발생 했습니까?

나는 질문이 분명 희망 .. 감사합니다.

+0

이 당신이 필요하지 않는 한 여기를 게시하는 documentation.No 점을 확인 응답 할 수있는 일반적인 질문입니다 해결책이 필요하지만 설명이 필요합니다. –

답변

1

컨트롤러 메서드가 호출되지 않았으므로이 호출 전에 처리 및 매개 변수 검사가 수행됩니다. 취급 흐름은 다음과 같다 :

DispatcherServlet.doDispatch() -> RequestMappingHandlerAdapter.invokeHandlerMethod() -> ServletInvocableHandlerMethod.invokeForRequest() -> InvocableHandlerMethod.getMethodArgumentValues를() -> HandlerMethodArgumentResolver.resolveArgument()

이 시점에서 필요한 매개 변수가 일치하지 않고 MissingServletRequestParameterException이 발생했습니다.

DefaultHandlerExceptionResolver는 상태 코드가 응답을 초래 MissingServletRequestParameterException 처리 : 잘못된 요청 (400)

+0

고맙습니다 ... – rematnarab