[SPRING] 빈 RequestParam 값을 defaultValue 사용할 수 있습니까?
SPRING빈 RequestParam 값을 defaultValue 사용할 수 있습니까?
다음과 비슷한 요청 매핑이있는 경우
@RequestMapping(value = "/test", method = RequestMethod.POST)
@ResponseBody
public void test(@RequestParam(value = "i", defaultValue = "10") int i) {
}
그런 다음이 요청을 다음과 같이 호출하십시오.
http://example.com/test?i=
오류 메시지가 나타납니다.
자바 매개 변수 클라이언트가 빈 매개 변수를 보내지 못하도록 막거나 문자열 값을 수락하여 빈 문자열을 찾지 못하는 경우에만 구문 분석하여이 문제를 해결할 수 있습니다.
업데이트 : 스프링의 최신 버전이 이제 원래 원하는 동작을 구현합니다.
방금 봄 4.3.5에서 이것을 테스트했으며 NumberFormatException을 발생시키지 않고 null 값을 기본값으로 바꾸는 것을 발견했습니다. 내 원래의 매핑이 제대로 작동합니다.
이 행동 변화가 일어난 스프링의 버전이 확실하지 않습니다.
해결법
-
==============================
1.@RequestParam 유형을 Integer로 변경하여 필요하지 않게 만들 수 있습니다. 이렇게하면 요청이 성공할 수 있지만 null이됩니다. 컨트롤러 메소드에서이를 명시 적으로 디폴트 값으로 설정할 수 있습니다.
@RequestParam 유형을 Integer로 변경하여 필요하지 않게 만들 수 있습니다. 이렇게하면 요청이 성공할 수 있지만 null이됩니다. 컨트롤러 메소드에서이를 명시 적으로 디폴트 값으로 설정할 수 있습니다.
@RequestMapping(value = "/test", method = RequestMethod.POST) @ResponseBody public void test(@RequestParam(value = "i", required=false) Integer i) { if(i == null) { i = 10; } // ... }
위의 예제에서 defaultValue를 제거했지만, 전혀 설정되지 않은 요청을 수신 할 것으로 예상하는 경우이를 포함시킬 수 있습니다.
http://example.com/test
-
==============================
2.기본 값을 설정하여 기본 유형을 유지할 수 있습니다.이 경우 "required = false"속성을 추가하십시오.
기본 값을 설정하여 기본 유형을 유지할 수 있습니다.이 경우 "required = false"속성을 추가하십시오.
@RequestParam(value = "i", required = false, defaultValue = "10") int i
추신 Spring 문서의이 페이지는 유용 할 것이다. 주석 유형 RequestParam
-
==============================
3.int 대신 제네릭 클래스 Integer를 사용하여 RequestParam을 설정하면 문제가 해결됩니다.
int 대신 제네릭 클래스 Integer를 사용하여 RequestParam을 설정하면 문제가 해결됩니다.
@RequestParam(value= "i", defaultValue = "20") Integer i
-
==============================
4.당신은 또한 이런 식으로 할 수 있습니다 -
당신은 또한 이런 식으로 할 수 있습니다 -
@RequestParam(value= "i", defaultValue = "20") Optional<Integer> i
-
==============================
5.이것은 2013 년에 버그로 간주되었습니다. https://jira.spring.io/browse/SPR-10180
이것은 2013 년에 버그로 간주되었습니다. https://jira.spring.io/browse/SPR-10180
버전 3.2.2로 수정되었습니다. 그 이후의 버전에서는 문제가 발생하지 않아야하며 코드가 정상적으로 작동해야합니다.
from https://stackoverflow.com/questions/12296642/is-it-possible-to-have-empty-requestparam-values-use-the-defaultvalue by cc-by-sa and MIT license
'SPRING' 카테고리의 다른 글
[SPRING] 스프링 배치 (Spring Batch)의 ItemReader에서 작업 매개 변수에 액세스하는 방법 (0) | 2018.12.17 |
---|---|
[SPRING] mvc : resources - Spring의 주석 구성 대체 (0) | 2018.12.17 |
[SPRING] 봄 junit 테스트 응용 프로그램 컨텍스트로드 (0) | 2018.12.17 |
[SPRING] 스프링 MVC 컨트롤러는 싱글 톤입니까? (0) | 2018.12.17 |
[SPRING] 봄 보안으로 사용자를 수동으로 로그 아웃하는 방법은 무엇입니까? (0) | 2018.12.17 |