/mvc2/validation
프로젝트를 이용한다.
하고 싶은 로직은 간단하게 컨트롤러에서 검사를 하여 조건에 맞지 않는 값이 들어오면 addForm.html
을 다시 보여주는 로직을 짜고 싶은 것이다.
직접 에러를 입력하는 방법은 간단하다.
Item
에 입력된 값을 직접 가져와 검사를 진행한 후
조건에 맞지 않으면 errors
에 에러 내용을 담는 것이다.
그 후에 errors
에 하나라도 오류가 담겨있다면, model
에 에러 정보를 넣어주고 addForm
으로 즉, 입력 폼으로 다시 넘어가게 된다.
이 부분은 사실 프로젝트 진행하면서 이미 쓸대로 써본 형식이다.
.field-error {
border-color: #dc3545;
color: #dc3545;
}
이런식으로 나온다.
참고 Safe navigation Operator
만약 errors
가 null
이라면 어떻게 될까?
처음에 등록폼에 진입할때는 errors
가 없다.
따라서 errors.containKey()
를 호출한 순간 NullPointerException
이 발생한다.
근데 errors?.
는 errors
가 null
일때 예외가 아니라 null
을 반환해주는 문법이다.
th:if
에서 null
은 실패로 처리되므로 오류 메시지가 출력되지 않는다.
스프링의 SpringEL이 제공하는 문법이다.
https://docs.spring.io/spring-framework/docs/current/reference/html/core.html#expressions-operator-safe-navigation
뷰 템플릿에서 중복 처리가 많다.
타입 오류 처리가 안된다.
Integer
가 들어가야할 곳에 String
이 들어가면 400 오류 페이지가 나온다. 이는 컨트롤러에 진입하기도 전에 예외가 발생해서 그런 것이다.