이제 숙련과제에서 회원 가입 부분을 구현을 해보려 하는데 데이터 검증하고,예외처리부분을 알아야한다.
Validation 검증
1) 유효성 검사를 위해 DTO의 적용 하고 싶은 필드에 사용 하고 싶은 어노테이션 하면 된다.
예시 코드를 보면
* username 4~10자까지만 허용
* username을 a~z 랑 0~9 만 허용
* 만약 클라가 3자 or 13자 보냈을경우 서버에서 massage에 적힌 메세지 보낸다.
@Size(min=4, max=10 , message ="4자 이상 10자 이하이어야 합니다")
@Pattern(regexp ="^[a-z0-9]$")
private String username;
Validation 예외처리
1) 유효성 검사를 하는데 오류 있을시 예외 처리를 하는 방법은 컨트롤러의 DTO 앞에 @Vaild 해준다.
2) BindingResult는 예외가 발생하면 객체에 오류에 대한 정보가 담긴다.
3) hasErrors() 메소드는 BindingResult 객체에서 발생한 오류가 있는지 여부를 확인하는거다. (반환 타입보면 boolean)
4) BindingResult 의 메소드 getFieldErrors() vs getAllErrors()
getFieldErrors는 필드에 대한 오류만 반환하고 getAllErrors는 필드뿐 아니고 DTO에 대한 모든 오류를 반환한다!