Request processing failed; nested exception is javax.validation.UnexpectedTypeException

pickylemon·2024년 5월 30일

Exception 모음

목록 보기
24/31

[Request processing failed; nested exception is javax.validation.UnexpectedTypeException: HV000030: No validator could be found for constraint 'javax.validation.constraints.NotEmpty' validating type 'java.lang.Integer'. Check configuration for 'boardSeq']을(를) 발생시켰습니다.
javax.validation.UnexpectedTypeException: HV000030: No validator could be found for constraint 'javax.validation.constraints.NotEmpty' validating type 'java.lang.Integer'. Check configuration for 'boardSeq'
at org.hibernate.validator.internal.engine.constraintvalidation.ConstraintTree.getExceptionForNullValidator(ConstraintTree.java:116)
at org.hibernate.validator.internal.engine.constraintvalidation.ConstraintTree.getInitializedConstraintValidator(ConstraintTree.java:162)

상황

Controller에서 특정 DTO에 Bean Validation을 적용하려할 때 발생한 에러

@PostMapping("/{boardTypeSeq}/{boardSeq}/modifyPage.do")
	public String modifyPage(@Validated BoardModifyDto boardModifyDto, BindingResult error, 
						@PathVariable("boardTypeSeq") int boardTypeSeq, ....) {
   ...
}
@Data
@NoArgsConstructor
public class BoardModifyDto {
	//제목, 내용, 파일
	@NotEmpty
	private int boardSeq;
	@NotEmpty
	private String title;
	@NotEmpty
	private String content;
	@NotEmpty
	private int boardTypeSeq;
	private int updateMemberSeq;
    ...
}

원인 및 해결

각 애노테이션마다 지원하는 타입이 다르므로 잘 살펴보고 써야한다.

  • 아래는 @NotEmpty에 대한 설명
  • @NotEmpty를 @NotNull로 착각하고 Integer타입에 적용해서 발생한 에러
  • Validation을 지원하는 타입을 확인하고 애노테이션을 사용할 것.
/**
 * The annotated element must not be {@code null} nor empty.
 * <p>
 * Supported types are:
 * <ul>
 * <li>{@code CharSequence} (length of character sequence is evaluated)</li>
 * <li>{@code Collection} (collection size is evaluated)</li>
 * <li>{@code Map} (map size is evaluated)</li>
 * <li>Array (array length is evaluated)</li>
 * </ul>
profile
안녕하세요

0개의 댓글