Validator

조태진·2024년 2월 24일
0

스프링 예외처리

목록 보기
4/4

Validator란 검증기이다

interface로 되어있으며

supports 와 validate 메서드를 override해서 사용 할 수 있다.


supports 메서드

@Override
    public boolean supports(Class<?> clazz) {
        return Item.class.isAssignableFrom(clazz);
        //item == clazz
        //item == 자식 클래스
    }

파라미터로 item이나 item의 자식 클래스가 들어오면
true를 반환하고 validate 메서드를 사용할 수 있게 해준다.


validate 메서드

@Override
    public void validate(Object target, Errors errors) {
        Item item = (Item) target;

        //검증 로직 글자가 없으면
        if (!StringUtils.hasText(item.getItemName())) {
            errors.rejectValue("itemName","required");
        }
        if (item.getPrice() == null || item.getPrice() < 1000 || item.getPrice() > 1000000) {
            errors.rejectValue("price","range", new Object[]{1000,1000000},null);
        }
        if (item.getQuantity() == null || item.getQuantity() > 10000) {
            errors.rejectValue("quantity","max", new Object[]{9999},null);
        }

        //복합 룰 검증
        if(item.getPrice() != null && item.getQuantity() != null){
            int resultPrice = item.getPrice() * item.getQuantity();
            if(resultPrice < 10000){
                errors.reject("totalPriceMin",new Object[]{10000,resultPrice},null);
            }
        }


    }

target은 객체의 타입을 검증해준다.
Object타입이므로 해당 객체로 형변환을 해줘야한다.
Errors는 BindingResult의 자식 객체인데
속성값을 검증해준다

0개의 댓글