ABOUT ME

Today
Yesterday
Total
  • 타입 오류 발생 시 에러 문장이 여러개가 나오는 문제 해결
    트러블슈팅 2022. 5. 31. 16:42

    FieldError 메소드 사용

    FieldError란?

    • 지정된 필드(있는 경우)와 관련된 첫 번째 오류를 가져옵니다.
    • 매개 변수: 필드 - 필드 이름
    • 필드 - 특정 오류 또는 null을 반환합니다.

    양식

    @Nullable
    FieldError getFieldError(String field);

    응용

    FieldError priceError = bindingResult.getFieldError("price");
    
    if( priceError==null && (item.getPrice() == null || item.getPrice() < 1000 || item.getPrice() > 1000000)){
                bindingResult.rejectValue("price","range", new Object[]{1000, 1000000}, null);
            }

    첫번쨰 오류가 null일 때와 조건식을 넣어줘서 or 조건식중 하나라도 있다면 rejectValue에서 에러 문장을 가져와 출력해준다.
    type오류가 발생한다면 priceError가 null이 아니게 되므로 조건에 맞지 않아 실행이 되지 않게 된다.

    결론

    type오류는 bindingResult에 첫번째로 담기게 되어서 FieldError에서 첫번째 오류라고 인식하는것이기 때문에 위와 같은 조건식이 성립 가능하다.

    만약 제가 생각한 점이 잘못되었다면 댓글로 말씀 부탁드립니다.

    6.2 수정

    FieldError가 첫번쨰 오류이기 때문에 위와 같은 조건식이 성립하는건 아니라고 한다.
    log.info로 errors.getFieldError("price")를 출력해본 결과 rejectedValue에 qqq가 담기고 bindingResult에서 자동적으로 타입오류로 인식함과
    동시에 errorcode로 넘어가게 된다. 즉, 에러에 담기게 된다는 말이다. error에 타입오류가 담기게 되면 위에서 변수로 만들었던 priceError는 true가 될테고 그럼 조건식이 성립되지 않으므로 다른 에러 코드는 실행되지 않게 되는 것이다.

    '트러블슈팅' 카테고리의 다른 글

    intellij 한글 깨짐 현상  (0) 2022.05.30
    intellij maven이 안보이는 error  (0) 2021.12.31
Designed by Tistory.