스프링 MVC2편

한상우·2023년 5월 31일
0

spring

목록 보기
3/5

스프링 MVC2편

메시지, 국제화

메시지

  • 다양한 메시지를 한 곳에 관리하도록 하는 기능, 여러 화면에 보이는 단어들의 수정을 일일이 해주는게 귀찮을 때 쓸 수 있음

국제화

  • 메시지 기능을 나라별로 관리할 수 있도록 지원
  • 헤더, 언어 선택, 쿠키 를 통해 어디서 접근한 건지 알 수 있음

messages.properties에 이런식으로 메시지를 지정해둘 수 있고

messages_en.properties, messages_ko.properties 와 같이 영어 버전이나 한국어 버전으로 국제화 시킬 수 있다. 이후 요청할 때 헤더나 언어 선택, 쿠키를 통해 적절한 값으로 반환해준다

# messages_en.properties
page.main=Main page
page.detail=Detail page

comment.hello=Hello
# messages_ko.properties
page.main=메인 페이지
page.detail=상세 페이지

comment.hello=안녕

검증

BindingResult 스프링이 제공하는 검증 오류 처리 방법

필드에 오류가 있으면 FieldError 객체를 생성해 bindingResult 에 담아둠

특정 필드가 아닌 글로벌 오류인 경우는 ObjectError 객체에 담음

bindingResult가 없으면, ModelAttribute에 바인딩시 타입 오류가 발생했을 때, 400 에러를 내뱉지만, 있으면 컨트롤러가 호출된다

Validator @ModelAttribute 모델에 요청을 바인딩할 때 주로 사용

Validator 인터페이스는 supports() 메소드와 validate() 메소드가 있다

supports - 이 검증기가 검증할 수 있는 오브젝트 타입인지를 확인

validate - supports를 통과한 경우 호출.

validate 만약 오류가 발견되면 validate(Object target, Errors errors) 에서 Errors 인터페이스를 통해 오류 정보 등록 가능

Controller에서 @Valid 어노테이션을 사용하면, 객체의 제약 조건을 검증한다

Bean Validation

  • 검증 기능을 코드로 작성하는 것의 번거로움 → 검증 로직을 표준화한 것이 Bean Validation → 검증 애노테이션과, 여러 인터페이스의 모음

  • spring-boot-starter-validation 라이브러리 필요,

  • javax.validation 으로 시작하면 특정 구현에 관계 없이 제공되는 표준 인터페이스

  • org.hibernate.validator 는 하이버네이트 구현체에만 제공

  • spring-boot-starter-validation 라이브러리를 넣으면, 자동으로 Bean Validator 를 인지하고 스프링에 통합함 - LocalValidatorFactoryBean을 글로벌 Validator로 등록한다. - 이 Validator가 애노테이션을 보고 검증한다. - 글로벌 Validator가 적용되어 있기에, @Valid, @Validated 만` 적용하면 된다 - 검증 오류가 발생하면 BindingResult에 담아준다

  • Bean Validation은 등록, 수정 같은 기능별로 validation이 다르다. 때문에 각 기능별로 맞는 객체를 만들어 전달함

    ex) public class ItemSaveForm { }

쿠키, 세션

profile
안녕하세요 ^^

0개의 댓글