Spring에서 제공하는 validation

강태석·2022년 11월 30일

Spring

목록 보기
5/7

Spring에서 제공하는 validation

오늘은 Spring에서 제공하는 BindingResult 라는 객체를 이용한 validation check하는 방법을 공부해봤다.
BindingResult 객체를 어떻게 사용하는지 알아보도록 하자!

BindingResult 객체 사용

Spring에서 제공하는 이 BindingResult는 유효성 검사를 매우 간편하게 할 수 있도록 도와준다.

위 코드는 회원을 관리하는 Controller의 회원가입 부분인데, 클라이언트로부터 add요청이 들어오면 읽게되는 메서드이다.

매개변수로 Member와 BindingResult가 있다.
Member는 view단에서 submit으로 들어온 유저의 작성 정보이고, 그 뒤 BindingResult가 바로 Spring에서 제공하는 객체이다.

@ModelAttribute로 받은 member 바로 뒤에 BindingResult를 반드시 작성해야 Spring이 제대로 일을 해주기 때문에 명심하도록 하자!

자 그럼 이제 사용된 Spring 내장메서드 , 객체들을 알아보자

StringUtils.hasText()

  • Spring에선 view에서 값이 넘어올때 아무런 값이 넘어오지 않아도 null이 아닌 빈 문자열로 넘어오게 되기 때문에,
    위 메서드를 사용해주면 공백 체크를 간편하게 해줄 수 있다.


BindingResult.addError()

  • 이름 그대로 에러를 추가해준다.
    매개변수로 FieldError()가 들어가며 FieldError의 인수로 개발자가 원하는 여러가지 값을 입력할 수 있다.


FiledError()

  • BindingReulst.addError()의 인수로 들어가는 객체이다.
    인수가 3개 , 7개를 넣을 수 있도록 overloading 되어있다.

  • 3개를 넣을 땐 objectName( 객체이름 ) , field( 객체의 멤버변수 ) , defaultMessage( default에러메시지 )를 넣을 수 있다.

  • 7개를 넣을 땐 objectName , field , rejectedValue( 에러나기 전 입력한 값 ) , bindingFailure , codes , arguments , defaultMessage를 넣을 수 있다.

  • codes : String[]을 입력할 수 있다. 내가 느끼기엔 꽤나 생소했는데 기본 file을 하나 만들어 그안에 값을 입력하고, application.properties에 추가해주면 spring이 알아서 입력한 값을 가져와준다.

  • arguments : file에 입력한 값중 {?}의 값을 Object[] 배열로 넣어줄 수 있다.

내가 봐도 글만 보면 이해하기 힘들다 사진으로 보도록 하자.

resources(application.properties와 같은 경로)에 errors.properties 라는 파일을 하나 만들고 위와 같은 값을 입력해줬다.

application.properties에 위와 같은 설정을 추가해줬다.
errors.properties지만 errors만 적어주면 된다.

위의 객체, 메서드들을 이용해 유효성 체크 한 로직만 다시한번 보도록 하자.

자 이제 view에 가서 thymeleaf 로 추가적인 작업만 해주면 된다.

기존의 코드에서 th:errorclass="field-error"<div class="field-error" th:errors="*{loginId}"></div> 
코드가 추가되었다.

자 이제 if문을 타서 error가 발생한다면 위 div가 나타나게 될것이고, 그렇지 않다면 정상적으로 회원가입이 진행될 것이다.

0개의 댓글