0131- 스프링 로그인 validator로 메세지 띄우기

jinvicky·2023년 1월 31일
0

2023 Spring Project TIL

목록 보기
2/32

목적은 컨트롤러를 가볍게 하려는 것이었다.
본래 DAO는 비즈니스 로직과는 상관이 없고
Service가 비즈니스 로직과 관계가 있다는데 그 에러 메세지를 jsp 화면에 보여주려면
모델 또는 일회용 그 redirectAttribute어쩌고가 파람으로 들어와야 하는데
서비스는 그런거 없는 거 같아서 고민했다.

컨트롤러에 그 무거운 회원가입, 로그인 로직들이 다 들어가면 나중에 그 로직 바꾸라고 하면
컨트롤러 파일에 수정이 들어가는 비중이 커진다. 진짜 그게 너무 싫어서 검색하다 보니까
validator라는 게 있다고 했다.

처음은 아래 링크를 보고 따라했다.
https://m.blog.naver.com/yh_park02/221732860702

근데 메세지는 뜨지도 않을 뿐더러 noMessageException이 떴다.
no message found command.id for locale 'ko' 뭐 이런 식이었다.

그래서 error.properties에서 선언한 '코드=메세지'에서 코드가 어디랑 안 맞았나
생각도 해봤다. => 일어날 것 같은 모든 코드를 짜집해서 넣어봤는데 안됐다.

Validator 인터페이스의 validate의 파라미터 errors에서 문제가 있나 아니면
errors.rejectValue()식으로 따라한 메서드가 파람이 알고보니 다른 거였나
하나하나 다 찍어보고 시도해봤는데 도저히 뜨지가 않았다.

그래서 좀 우회했다. 그래도 validator가 컨트롤러에 수많은 유효성 메서드를 넣는 것으로부터
탈출시켜준 것은 분명해서 그냥 model에 박고 jsp에서도 ${}에서 메세지로 받았다.

이후 처리할 게 많지만 일단 어떻게든 내가 넣은 메세지를 jsp에 보여주고 싶어서 아래처럼 우회해서 값을
끄집어 냈다.

model.addAttribute("idError", result.getGlobalError().getDefaultMessage());

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

0개의 댓글

관련 채용 정보