스프링 - validator를 이용한 유효성 검사

jinvicky·2023년 2월 24일
0

2023 Spring Project TIL

목록 보기
23/32

기존 시큐리티를 적용한 내 코드는 빈 값을 입력했을 경우에 405 method not allowed 에러가 뜬다.
security-context.xml에 등록한 login-processing-url의 경로에 매칭되는 컨트롤러 메서드가 없어서 그런 것이라는 건 알겠는데, 어떻게 login_check에서 시큐리티가 처리되는 지를 이해하지 못했다.

그래서 일단 유효성 검사하면 그냥 일일이 조건문을 컨트롤러에 추가하는 건데 컨트롤러가 그러면 너무 무거워져서 validator를 다시 공부했다(사실 5번 실패했다).

실패한 이유는 대략

  • commandName은 이제 스프링 5 들어오면서 deprecated되어서 modelAttribute로 대신 써야 한다.
  • 검사를 위한 페이지를 GetMapping할 때 미리 모델에 검사할 타입의 객체를 addAttr~()해야 했다.
  • <form:input~은 path=""가 필수값이다. path는 검사할 객체의 iv에 실제로 존재해야 한다.
  • 맵핑된 경로의 컨트롤러에서는 @Valid @ModelAttribute("객체")를 타입 객체 앞에 꼭 추가해야 한다.
  • BindingResult 는 꼭 검사할 객체 바로 뒤에 와야 한다. 순서가 중요하다.
<%@ taglib prefix="form" uri="http://www.springframework.org/tags/form" %>

요 태그 라이브러리가 validator 메세지를 띄우기 위한 필수 조건이다.
<form:form ~ 이 들어간 코드를 보고 이건 무슨 문법인가 하고 에러도 많이 냈다.

validator는 애너테이션을 사용하는 방법과 validator를 구현한 클래스를 @InitBinder에 등록해서 사용하는 방법이 있다. 나의 경우 후자만 제대로 동작했다.

참고 사이트
https://donghyeon.dev/spring/2019/04/15/Spring%EC%97%90%EC%84%9C-validation-%EA%B5%AC%ED%98%84%ED%95%98%EA%B8%B0/

Validator 에러 모음
https://zorba91.tistory.com/entry/Unable-to-find-setter-method-for-attribute-commandName-%EC%97%90%EB%9F%AC-%ED%95%B4%EA%B2%B0-1

profile
Front-End와 Back-End 경험, 지식을 공유합니다.

0개의 댓글

관련 채용 정보