Languages | Frameworks/Spring

    ValidationUtils

    if (!StringUtils.hasText(item.getItemName())) { bindingResult.rejectValue("itemName", "required"); } 이 코드를 ValidationUtils를 사용하면 ValidationUtils.rejectIfEmptyOrWhitespace(bindingResult, "itemName", "required"); 로 줄일 수 있다.

    MessageCodesResolver - 메세지 우선순위 설정

    1. Test(assertj 사용) 실 코드에 적용시키기 전, 먼저 Test를 해보자 test => itemservice => validation에 MessageCodesResolverTest 클래스를 만든다 2. MessageCodesResolver 동작방식 rejectValue() , reject() 는 내부에서 MessageCodesResolver 를 사용한다. 여기에서 메시지 코드들을 생성한다. FieldError , ObjectError 의 생성자를 보면, 오류 코드를 하나가 아니라 여러 오류 코드를 가질 수 있다. MessageCodesResolver 를 통해서 생성된 순서대로 오류 코드를 보관한다. 이 부분을 BindingResult 의 로그를 통해서 확인해보자. codes [range.it..

    BindingResult(rejectValue(), reject())사용하기 -3 + MessageCodesResolver 소개

    1. BindingResult의 rejectValue(), reject() 기능 BindingResult가 제공하는 rejectValue(), reject()를 사용하면, FieldError, ObjectError를 직접 생성하지 않고, 깔끔하게 검증 오류를 다룰 수 있다. bindingResult.addError(new FieldError("item", "price", item.getPrice(), false, new String[]{"range.item.price"}, new Object[]{1000, 1000000}, null)); 이 코드를 bindingResult.rejectValue("price", "range", new Object[]{1000, 1000000}, null); 이렇게 간단하게..

    BindingResult -2

    이렇게 사용하면, 에러를 발생시켜도 사용자가 입력한 변수가 그대로 사용자에게 보여지게 됨 bindingResult.addError(new FieldError("item", "itemName", item.getItemName(), false, null, null, "상품 이름은 필수 입니다.")); 여기서 false는 bindingFailure, null은 순서대로 codes, arguments를 의미 하지만 에러메세지를 properties에 저장해놓고, 불러올 수도 있다. 그러면 defaultMessage에는 null을 넣고, codes에는 String배열을 만들고 properties에 선언한 string객체를 넣어준다. bindingResult.addError(new FieldError("item", ..

    BindingResult(error 출력시 유용) -1

    Method에 BindingResult bindingResult 객체 선언 후( 주의할 점 !! BindingResult객체 선언은 ModelAttribute 다음에 와야함) bindingResult.addError(new FieldError(objectName명, field명, defaultMessage명)); 여기서 FieldError는 특정 Field에 대한 error이다 따라서 globalError를 관리할때에는 ObjectError 생성자를 사용해야함 bindingResult.addError(new ObjectError("item", "가격 * 수량의 합은 10,000원 이상이어야 합니다. 현재 값 = " + resultPrice)); 그리고 검증 실패시에는 if 조건문에 bindingResul..