인프런 커뮤니티 질문&답변

김태희님의 프로필 이미지

작성한 질문수

스프링과 JPA 기반 웹 애플리케이션 개발

회원 가입 폼 서브밋 검증

선생님 안녕하세요

작성

·

293

0

안녕하세요 제가 강의를 보고 공부하던도중 8:14분에 있는 정규식과 닉네임의 제출양식이 같아야하는부분에서 must match~라고 빨간 오류를 내주는 부분에서 저는 가입하기 버튼을 눌렀을때 오류를 내지않고 그냥 인덱스 페이지(/)로 그냥 정상적으로 보내버려서 오늘 하루동안 이 오류를 계속 잡고 있다가 디버깅, 코드 비교 5번, 인텔리제이 재설치 pom.xml 파일 똑같이 맞추기 별 방법을 해봐도 안됬는데

선생님께서 제공해주신 완성된 소스코드의 첫 커밋으로 체크아웃하여 스프링 버전을 선생님의 스프링 버전인 2.2.4에서

제가 강의를 들으며 직접 코드를 따라치던 스프링의 버전인 2.5.2로 변경을 하고나니

선생님꺼의 완성코드 프젝에서도 저런 must match오류 구문이 안나타나고 그냥 인덱스페이지로 이동을 시키는 현상이 똑같이 나타났습니다.

제가 이 현상을 보고 오류의 원인이 스프링 버전차이라고 확신을 하게되었는데요 제 인텔리버전은 21.2EAP버전입니다 근데 스프링 프젝을 처음만들때 2.2.4버전으로 만드는 탭이 아예없어서 앞으로 스프링 프젝을 2.5이상 버전으로 해야할거같은데 이런 버전차이때문에 나타나는 현상을 어떻게 해결할수 있을까요?

그리고 @Pattern 어노테이션 뿐만아니라 @Length어노테이션에도 min = 3, max = 5를 주고 5개를 훨씬넘게 입력을 했는데도 오류를 잡아주지않았습니다.

P.S 제가 직접 보고 따라쳤던 타이핑버전의 소스코드를 그대로 선생님꺼 완성된프젝에 옮겨서 실행했는데 정상작동이 됬습니다. 이 말은 제가 타이핑친 소스코드에 정말 문제가 없다는 거여서 제가 버전차이의 문제라고 확신을 하게되었습니다. 아 그리고 EAP버전이여서도 아닌게 제가 재설치를 하기전까지는 EAP버전이 아니였습니다.

긴글 읽어주셔서 정말 감사합니다.

답변 6

0

저도 같은현상이 있었는데요!

현재 spring boot 3 , gradle로 진행중입니다.

중간에

implementation 'org.springframework.boot:spring-boot-starter-validation'

을 추가하고 그레들을 리프레쉬 해주고 @Valid가 잘 임폴트되서 문제없다 생각하고 진행하다가 해당 must match오류문구도 안나오고 그냥 백단 검증자체가 안먹고 바로 리다이렉트 먹어서 몇시간동안.. 재기동도 해보고 ,,,단테랑 로깅도 찍어보고 별짓을 다해봤는데도..안먹어서

계속 구글링하다가 외국사이트에서 비슷한 예로 아예 프로그램을 껏다 켜보라는걸 보고 인텔리j를 껐다 키고 다시 접속하니까 잘먹씁니다!!
(프로젝트 말고 프로그램 자체를 꺼야하더라구요)

좀 허무하지만 너무 계속 한곳만 집중하다보니 이 생각을 못했던거 같습니다...

결론 : 저 같은 경우는 IDE 문제인거같기두 합니다 ㅠ_ㅠ

0

저도 같은 문제가 있어서 spring-boot-starter-validation 의존성 추가했지만 여전히 문제가 있어서 봤더니 그 전에 hibernate-validator를 의존성 추가 해놔서 충돌해서 그런거 같네요 hibernate-validator 주석처리하고 reload all maven projects 하니깐 되네요

0

김태희님의 프로필 이미지
김태희
질문자

선생님 안녕하세요

원인은 결국 찾지는못했지만 이상하게

해결이됬습니다.. 정말 찝찝하긴한데

제가 분명히 어떤부분에서 잘못한것 같습니다. 강의를 계속 이어나가면서

알아보도록하겠습니다.

바쁘신데 답변 정말 감사드립니다

0

백기선님의 프로필 이미지
백기선
지식공유자

글쎄요. 스프링 버전의 문제라기 보다는 김태희님 프로젝트에 무언가 문제가 있을것 같습니다.

제 프로젝트를 방금 스프링 부트 2.5.2로 올려서 테스트를 실행해봤을 때 @Valid가 제대로 동작하는 것을 확인했습니다. 최신 코드는 여기에 올려두었으니 참고하세요.

https://github.com/whiteship/studyolle

0

김태희님의 프로필 이미지
김태희
질문자

validation 의존성도 추가를 질문전에 해봤는데 되질 않았습니다. 물론 답변 받은후에도 다시해봤습니다.

답변 전후로 다만 차이가 났던건  PostMapping / sign-up에 SignUpForm @Valid어노테이션이 빨간상태 였다가 의존성을 추가하고 업데이트를 하니 사용할수있는 어노테이션(노란색)으로 바뀌었습니다.

제 질문에 나와있듯이 선생님 버전과 제 버전 둘다 디버그를 통해서 다 확인해본 결과 둘다 Valid체크를 하더라고요 근데 결과가 다를뿐입니다.

그리고 선생님꺼 프젝의 스프링부트의 버전을 2.5이상 버전으로 설정을 했고 하고나니 @Valid를 찾지못하길래 벨리데이션도 의존성에 다 추가를하고 다시 실행해 보니 선생님꺼 프젝조차도 Validation을 하지 않았습니다. 즉, must match 오류가 나질않았습니다. 

그래서 제가 스프링버전에 따라서 이게 되고 안되는구나 라고 결론을 짓게되었고 이것에 대한 결론짓는게 맞는지,

다른 방안은 어떤게있을지에대해서 여쭙고싶습니다.

0

백기선님의 프로필 이미지
백기선
지식공유자

스프링 부트 2.3부터 spring-boot-starter-validation 의존성을 따로 pom.xml에 추가해주셔야합니다.
pom.xml에 의존성을 추가한 뒤에 다시 해 보세요.

<dependency> 

    <groupId>org.springframework.boot</groupId> 

    <artifactId>spring-boot-starter-validation</artifactId> 

</dependency>