# BindingResult
[TIL] @Valid 예외를 @RestControllerAdvice에서 처리하기
프로젝트를 진행하던 도중, 예외 처리를 해야되는 부분이 있었다.컨트롤러단에서 BindingResult를 사용해 View로 예외 내용을 전달하는 방식을 배웠지만, 지금 진행되는 프로젝트에는 따로 View가 없다. 즉, REST API 형식이다.그렇다면, 이러한 상황에서는
[SpringBoot] 어노테이션
: 클라이언트가 보낸 요청 파라미터를 컨트롤러 메서드의 매개변수에 바인딩주로 Get방식에서 사용 (쿼리 스트링): 클라이언트가 보낸 JSON 형태의 HTTP 바디의 내용을 Java 객체로 변환할 때 사용주고 POST 방식에서 사용 (GET, DELETE 방식에서는 사용
Validation
javascript로 DOM을 조작해 클릭 이벤트를 걸고 유효성을 체크하는 방법은 클라이언트 측에서 진행된다. 자바에서 제공하는 validation 패키지에는 유효성 검증을 위한 인터페이스들이 들어있다. 이것을 사용하는건 서버측에서 유효성 체크하는 방식이다. 설정
V2.7 Validator 분리
지금까지 구현한 V2 의 method 는비지니스 로직보다 검증로직의 길이가 더 길어 유지보수성이 매우 떨어진다.검증만 담당하는 별도의 객체를 생성해 Controller 의 검증 로직을 분리시킬 수 있다.@Component 로 Spring Bean 으로 등록Validat
오류코드 설계
오류코드를 너무 세밀하게 정리하면 클라이언트에게 디테일한 메시지를 전달할 수 있지만 범용성이 낮아진다.반대로 단순하게 정리하면 범용성이 좋아 여러곳에서 사용할 수 있지만,메시지를 세밀하게 작성하기 어려워진다.실무에서는 기본적으로 단순하게 메시지를 정리하다가,세밀하게 작
V2.4 rejectValue 와 reject
🔗 요구사항 확인addError 의 첫번째 Param 은 BindingResult 의 Object 값을 입력하는 자리이다.하지만 사실 BindingResult 는 바인딩 해야할 Object 를 이미 알고있다.BindingResult 가 꼭 대상으로 하는 Object
V2.2. FieldError 와 ObjectError
🔗 요구사항 확인지난 포스트까지 구현하면 검증에 실패할경우 클라이언트에게 문제점을 표시해줄 수 있지만,클라이언트가 입력했던 data 들이 전부 지워지는 문제가 있었다.FieldError 의 생성자는 기존에 사용한 생성자 외에 다른 생성자도 존재한다.두번째 세번째 Pa

V2.1. type 에러 확인
🔗 요구사항 확인BindingResult 를 적용하면 Controller 에 별도의 로직을 추가하지 않아도 type 을 잘못 요청할경우 기본적으로 에러메시지를 출력해준다.Entity 나 DTO 에서 type 문제가 발생할경우 에러를 발생시키지 않고 BindingRes
V2.1. Binding Result 적용 하기
🔗 요구사항 확인BindingResultSpring 에서 제공하는 validation 라이브러리Map 의 기능을 BindingResult 이 대신할 수 있으므로 Map 은 삭제한다.검증을 통과하지 못할경우 BindingResult 에 error 를 추가해준다.Mode
spring Security 4. - log-in 접근 권한
클라이언트의 로그인 여부와 로그인 했을경우 정보를 조회하는 방법목표Answer 를 작성하면 SiteUser 의 정보를 조회해 로그인 회원일경우 Answer 에 Username 을 표시하는 기능을 구현log-out 상태로 게시물 작성을 시도하면 log-in 페이지로 이동
검증 - BindingResult
공식 DocsSpring에서 제공하는 Field Type, 프로그래머가 직접 작성한 FieldError, ObjectError를 한데 묶어(List) Model에 주입시켜주는 통합 인터페이스이다.Model에 주입이 되어 Thymeleaf 같은 뷰 템플릿에 넘겨주어서 사

스프링MVC 2(1)
messages.properties 라는 메시지 관리용 파일을 만들고 사용item=상품item.itemName=상품명item.itemPrice=상품가격messages_en.properties, messages_ko.properteis 등국제화가 적용되지 않을 경우 기본
오류 코드와 메시지 처리6
검증 오류 코드는 다음과 같이 2가지로 나눌 수 있다.개발자가 직접 설명한 오류 코드 -> rejectValue()를 직접 호출스프링이 직접 검증 오류에 추가한 경우 (주로 타입 정보가 맞지 않음)price 필드에 문자 "A"를 입력해보자.로그를 확인해보면 Bindin
오류 코드와 메세지 처리 5
핵심은 구체적인 것에서! 덜 구체적인 것으로!MessageCodesResolver는 required.item.itemName처럼 구체적인 것을 먼저 만들어주고, required처럼 덜 구체적인 것을 가장 나중에 만든다.이렇게 하면 앞서 말한 것 처럼 메세지와 관련된 공
오류 코드와 메세지처리4
우선 테스트 코드로 MessageCodesResolver를 알아보자.검증 오류 코드로 메세지 코드들을 생성한다MessageCodesResolver 인터페이스이고 DefaultMessageCodesResolver는 기본 구현체 이다.주로 다음과 함께 사용ObjectErr
BindingResult2
스프링이 제공하는 검증 오류를 보관하는 객체이다. 검증 오류가 발생하면 여기에 보관하면 된다.BindingResult가 있으면 @ModelAttribute에 데이터 바인딩 시 오류가 발생해도 컨트롤러가 호출 된다.ex) @ModelAttribute에 바인딩 시 타입 오
Spring Boot - 사용자 요청 방식
**❗ 사용자 ( URI 리소스 ) 와 서버 ( Spring 컨테이너 ) 가 서로 데이터를 주고 받기 위해 사용되는 기법들 ** 📌 PathVariable 경로변수 🤔 바인딩 이란 ? Spring 사용자 관점에서 사용자가 입력한 값을 어플리케이션 도메인 객체에

BindingResult
BindingResult는 검증 오류를 보관하는 객체이다. BindingResult를 보관하는 방법은 세가지가 있다.@ModelAttribute 객체에 타입 오류 등으로 바인딩이 실패하는 경우예) 사용자가 정수형 필드에 문자를 넣었을 경우바인딩이 실패하면 스프링이 Fi
[SPRING] 5장 컨트롤러 요청 처리
MemberController.java / registerForm.jsp주요 매개 변수Model 이동 대상에 전달할 데이터를 가지고 있는 인터페이스RedirectAttributes 리다이렉트 대상에 전달할 데이터를 가지고 있는 인터페이스자바빈즈 클래스
[Spring] 스프링이 제공하는 검증 오류 처리 방법, BindingResult
스프링이 제공하는 검증 오류 처리 방법 BindingResult BindingResult bindingRsult 파라미터의 위치는 @ModelAttribute Item item 다음에 와야한다. BindingResult는 Model에 자동으로 포함된다. [FieldE