Validation - 검증 직접처리

/mvc2/validation 프로젝트를 이용한다.

검증 직접 처리

상품 저장 성공

상품 저장 실패

하고 싶은 로직은 간단하게 컨트롤러에서 검사를 하여 조건에 맞지 않는 값이 들어오면 addForm.html을 다시 보여주는 로직을 짜고 싶은 것이다.

개발

직접 에러를 입력하는 방법은 간단하다.
Item에 입력된 값을 직접 가져와 검사를 진행한 후
조건에 맞지 않으면 errors에 에러 내용을 담는 것이다.

그 후에 errors에 하나라도 오류가 담겨있다면, model에 에러 정보를 넣어주고 addForm으로 즉, 입력 폼으로 다시 넘어가게 된다.

addForm.html

이 부분은 사실 프로젝트 진행하면서 이미 쓸대로 써본 형식이다.

css 추가

.field-error {
      border-color: #dc3545;
      color: #dc3545;
}

이런식으로 나온다.

참고 Safe navigation Operator
만약 errorsnull이라면 어떻게 될까?
처음에 등록폼에 진입할때는 errors가 없다.
따라서 errors.containKey()를 호출한 순간 NullPointerException이 발생한다.

근데 errors?.errorsnull일때 예외가 아니라 null을 반환해주는 문법이다.
th:if에서 null은 실패로 처리되므로 오류 메시지가 출력되지 않는다.
스프링의 SpringEL이 제공하는 문법이다.
https://docs.spring.io/spring-framework/docs/current/reference/html/core.html#expressions-operator-safe-navigation

남은 문제점

뷰 템플릿에서 중복 처리가 많다.
타입 오류 처리가 안된다.
Integer가 들어가야할 곳에 String이 들어가면 400 오류 페이지가 나온다. 이는 컨트롤러에 진입하기도 전에 예외가 발생해서 그런 것이다.

좋은 웹페이지 즐겨찾기