ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 프로필 페이지 3
    Spring Boot/프로필 페이지 만들기 2021. 12. 15. 21:28

    업로드 이미지 유효성 검사

     

    caption(이미지설명) 은 없어도 되지만, 이미지 파일은 꼭 입력받도록

     

    그런데 ImageUploadDto.java 파일에서

    validation 체크로 @NotBlank 와 같은 유효성 검사가 안된다.

    MultipartFile 타입에서는 불가함

     

    그래서, ImageController.java 파일에서 이미지 업로드 메서드에 아래 코드 추가

     

    		if(imageUploadDto.getFile().isEmpty()) {
    			throw new CustomValidationException("이미지가 첨부되지 않았습니다.", null);
    		}

     

     

    더보기

    <CustomValidationException.java> 파일

     

    public class CustomValidationException extends RuntimeException{
    
    	
    	private static final long serialVersionUID = 1L;
    
    	private Map<String, String> errorMap;
    	
    	public CustomValidationException(String message, Map<String, String> errorMap) {
    		super(message);
    		this.errorMap = errorMap;
    	}
    	
    	public Map<String, String> getErrorMap(){
    		return errorMap;
    	}
    }

     

    <ControllerExceptionHandler.java>파일 - 모든 exception 을 가로채서 처리함

     

    	@ExceptionHandler(CustomValidationException.class)
    	public String validationException(CustomValidationException e) {
    			return Script.back(e.getErrorMap().toString());
    		}

    데이터로 응답하는 것이 아니라 페이지로 응답할 것이기 때문에 CustomValidationException 사용

    (첫번째 매개변수: String message, 두번째 매개변수: Map<String, String> errorMap)

     

     

    그런 다음 사이트에서 이미지 첨부하지 않고 업로드 버튼 누르면 아래와 같은 메세지가 나오면서 에러가 길게 나타나는데,즉 제대로 CustomValidationException 처리가 안됨.

     

     

     

    그런데, 위에 접은글에 첨부한 ControllerExceptionHandler.java 파일에서 CustomValidationException 에러 관련 코드를 보면

    	return Script.back(e.getErrorMap().toString());

    이렇게 리턴을, errorMap 관련해서 하는데, null 값이라서 에러 발생함

     

    그래서 저 리턴값을 분기를 시켜서, 

     

    @ExceptionHandler(CustomValidationException.class)
    	public String validationException(CustomValidationException e) {
    			
    		if(e.getErrorMap() == null) {
    			return Script.back(e.getMessage());
    		}else {
    			return Script.back(e.getErrorMap().toString());
    		}
    	}

    이렇게 변경시킴.

    errorMap 값이 없으면 message 값을 리턴해서 표시하라고.

    그러면 사이트에서 이미지 첨부 없이 업로드 버튼 누르면 아래와 같이 메세지가 나옴

     

     

     

    'Spring Boot > 프로필 페이지 만들기' 카테고리의 다른 글

    프로필 페이지 7 - @JsonIgnoreProperties  (0) 2021.12.18
    프로필 페이지 5  (0) 2021.12.16
    프로필 페이지 4  (0) 2021.12.16
    프로필 페이지 2  (0) 2021.12.15
    프로필 페이지 1  (0) 2021.12.14

    댓글

Designed by Tistory.