복붙노트

[SPRING] Spring MVC - 필요없는 것으로 정의 된 누락 된 필드에 대한 HTTP 상태 코드 400 (잘못된 요청)

SPRING

Spring MVC - 필요없는 것으로 정의 된 누락 된 필드에 대한 HTTP 상태 코드 400 (잘못된 요청)

나는이 컨트롤러 메소드로 Spring MVC 애플리케이션을 가지고있다.

@RequestMapping(value = "/add", method = RequestMethod.POST)
public String addNumber(@RequestParam(value="number", required=false) Long number) {
   ...
   return "redirect:/showAll/";
}

내 JSP에서 위의 컨트롤러 메서드에 "숫자"라는 값을 게시하는 표준 HTML 양식이 있습니다. 그러나 컨트롤러 메소드가 내 브라우저라고 불리기 전에 값을 빼고 (텍스트 필드에 아무 것도 입력하지 마십시오) 컨트롤러에 데이터를 POST하면

HTTP Status 400 - Required Long parameter 'number' is not present

컨트롤러 메소드 주석은 "숫자"매개 변수를 명확하게 정의하지는 않지만 필수는 아닙니다.

아무도 무슨 일이 벌어 질지 약간의 생각이 있습니까?

고맙습니다.

추신 : 던져지고있는 예외는 다음과 같습니다 :

org.springframework.web.bind.MissingServletRequestParameterException: Required Long parameter 'number' is not present

편집 : 이것은 봄 3.2.3.RELEASE 버그 (여기 참조)입니다. 버전 3.1.4.RELEASE에서는 더 이상이 문제가 없습니다.

해결법

  1. ==============================

    1.같은 상황을 겪었고, 매개 변수가 요청에 빈 값으로 표시되면 이런 일이 발생합니다.

    같은 상황을 겪었고, 매개 변수가 요청에 빈 값으로 표시되면 이런 일이 발생합니다.

    즉, POST 본문에 "number ="(값이 비어 있음)이 있으면 Spring은이 예외를 throw합니다. 그러나 매개 변수가 요청에 전혀 표시되지 않으면 오류없이 작동합니다.

  2. from https://stackoverflow.com/questions/17858537/spring-mvc-http-status-code-400-bad-request-for-missing-field-which-is-defin by cc-by-sa and MIT license