[SPRING] Spring MVC의 @RequestBody 매개 변수로 @Valid를 어떻게 사용합니까?
SPRINGSpring MVC의 @RequestBody 매개 변수로 @Valid를 어떻게 사용합니까?
내 @Controller의 처리기 메서드에 대한 매개 변수에서 @Valid를 사용하는 데 문제가 있습니다. 내 코드는 다음과 같습니다.
@RequestMapping(value=BIBBLE_BOBBLE_URI_PATTERN + "/widgets", method=RequestMethod.POST)
@ResponseBody
@ResponseStatus(HttpStatus.CREATED)
public Widget saveNewWidget(
@PathVariable final String username,
@PathVariable final String bibbleBobbleName,
@Valid @RequestBody final Widget widget,
final BindingResult results,
final HttpServletRequest request,
final HttpServletResponse response)
위젯은 내 도메인 객체 중 하나의 클래스입니다. @RequestBody 주석을 사용하여 요청의 페이로드가 위젯에 매핑되었음을 나타냅니다 (잭슨이 클래스 패스에 있지만 XML을 사용할 수 있기 때문에 요청은 JSON입니다.).
보시다시피 BindingResult 매개 변수는 Widget 매개 변수 바로 뒤에옵니다. 그러나 다음 오류가 발생합니다.
java.lang.IllegalStateException: Errors/BindingResult argument declared without preceding model attribute. Check your handler method signature!
@Valid 주석을 @RequestBody 매개 변수에 적용한 다음 결과를 얻으려면 어떻게해야합니까?
추신 콘트롤러의 배선 처리, 콘텐트 협상 등을 위해 주석 기반 구동을 사용하고 있습니다.
해결법
-
==============================
1.Spring 3.1을 사용하고 있습니까? 이것은 Spring version 3.1에서 새롭게 추가 된 기능이다. @RequestBody 메서드 인수에 대한 유효성 검사를 참조하십시오.
Spring 3.1을 사용하고 있습니까? 이것은 Spring version 3.1에서 새롭게 추가 된 기능이다. @RequestBody 메서드 인수에 대한 유효성 검사를 참조하십시오.
-
==============================
2.이것은 봄 3.0의 문제이며 3.1 M2에서 수정되었습니다.
이것은 봄 3.0의 문제이며 3.1 M2에서 수정되었습니다.
https://jira.springsource.org/browse/SPR-6709
Spring 3.0을 사용하고 있다면, 몇 가지 스레드와 방대한 독서를 토대로이 문제에 대한 최선의 접근 방법이 있습니다. 애스펙트 지향 접근 방식으로,이 문제를 해결 한 스프링 버전으로 업그레이드 할 때 문제를 해결할 수 있습니다.
@RequestMapping 어노테이션을 사용하는 메소드에 대한 호출을 가로 채고 @Valid 어노테이션이있는 각 매개 변수에 대해 aspect에서 해당 발리 데이터를 호출합니다.
from https://stackoverflow.com/questions/6129285/how-do-i-use-valid-with-spring-mvcs-requestbody-parameters by cc-by-sa and MIT license
'SPRING' 카테고리의 다른 글
[SPRING] Thymeleaf + Spring : 줄 바꿈을 유지하는 방법? (0) | 2019.03.19 |
---|---|
[SPRING] spring mvc에서 리다이렉트 (redirect) 한 후 컨트롤러에서 pass 매개 변수를위한 방법은 무엇입니까? (0) | 2019.03.19 |
[SPRING] 스프링 데이터 나머지에있는 동일한 엔티티에 대한 다중 리포지토리 (0) | 2019.03.18 |
[SPRING] 차이가 액세스 = "permitAll"과 필터 = "없음"? (0) | 2019.03.18 |
[SPRING] 로드 된 모든 Spring 빈을 인쇄하십시오 - Spring Boot (0) | 2019.03.18 |