IT/자바, 스프링
@Valid와 BindingResult로 인풋값 검증이 안됨...
thesse
2023. 5. 16. 16:00
300x250
반응형
예전에 했던건데...
과거 프로젝트에서 무지성으로 복붙했더니 안먹힌다.
result.hasErrors()가 무조건 false로 나옴;;;
알고보니 spring boot 3으로 올리면서 디펜던시가 변경되었다.
javax.validation 에서 spring-boot-starter-validation 으로 바꿔주니 잘됨
// implementation group: 'javax.validation', name: 'validation-api', version: '2.0.1.Final'
implementation 'org.springframework.boot:spring-boot-starter-validation'
전체 코드
Controller
인풋받는 객체 앞에 @Valid 붙여주고, 검증 결과를 저장할 BindingResult 같이 받아주기
@PostMapping(value = "/signup")
public ResponseEntity signup(@RequestBody @Valid SignUpRequest request, BindingResult result) {
if(result.hasErrors()){
return ResponseEntity.badRequest().body(result.getAllErrors().get(0).getDefaultMessage());
}
//...
}
Dto
각 멤버 위에 어노테이션으로 검증사항 표시
public class SignUpRequest {
@NotEmpty(message = "id를 입력하세요")
private String id;
@Email
@NotEmpty(message = "email을 입력하세요")
private String email;
//...
}
300x250
반응형