@Valid
궁금한게 지금 코드에서는 "회원 이름은 필수입니다."라고 딱 1개만 해놨는데 도시 거리 우편번호도 에러메세지를 만들고나서 submit 버튼을 누르면 동시에 4개 에러메시지가 뜹니다. 혹시 순차적으로 뜨게 하는 방법은 따로 없는건가요? 예를 들면 4개다 에러메세지 보유중인데 회원이름을 입력안하고 제출버튼 클릭시 회원 에러메세지만 나오고 나머지 에러메시지는 안나오게 끔 하는 방법이 있나요?
답변 1
2
안녕하세요. alrnr3521님, 공식 서포터즈 OMG입니다.
.
어떤 코드를 작성하셨는지 확인이 안되어 예상하여 답변 드리겠습니다.
어떤 유효성 체크를 한 지 적어놓지 않으셔서 @NotEmpty로 진행하였고, createMemberForm.html에 말씀하신 에러메시지가 출력되도록 수정하였습니다.
@Getter @Setter
public class MemberForm {
@NotEmpty(message = "회원 이름은 필수 입니다")
private String name;
@NotEmpty(message = "도시 이름은 필수 입니다")
private String city;
@NotEmpty(message = "거리 이름은 필수 입니다")
private String street;
@NotEmpty(message = "우편번호는 필수 입니다")
private String zipcode;
}
createMemberForm.html
<form role="form" action="/members/new" th:object="${memberForm}" method="post">
<div class="form-group">
<label th:for="name">이름</label>
<input type="text" th:field="*{name}" class="form-control" placeholder="이름을 입력하세요"
th:class="${#fields.hasErrors('name')}? 'form-control fieldError' : 'form-control'">
<p th:if="${#fields.hasErrors('name')}" th:errors="*{name}">Incorrect date</p>
</div>
<div class="form-group">
<label th:for="city">도시</label>
<input type="text" th:field="*{city}" class="form-control" placeholder="도시를 입력하세요"
th:class="${#fields.hasErrors('city')}? 'form-control fieldError' : 'form-control'">
<p th:if="${#fields.hasErrors('city')}" th:errors="*{city}">Incorrect date</p>
</div>
<div class="form-group">
<label th:for="street">거리</label>
<input type="text" th:field="*{street}" class="form-control" placeholder="거리를 입력하세요"
th:class="${#fields.hasErrors('street')}? 'form-control fieldError' : 'form-control'">
<p th:if="${#fields.hasErrors('street')}" th:errors="*{street}">Incorrect date</p>
</div>
<div class="form-group">
<label th:for="zipcode">우편번호</label>
<input type="text" th:field="*{zipcode}" class="form-control" placeholder="우편번호를 입력하세요"
th:class="${#fields.hasErrors('zipcode')}? 'form-control fieldError' : 'form-control'">
<p th:if="${#fields.hasErrors('zipcode')}" th:errors="*{zipcode}">Incorrect date</p>
</div>
<button type="submit" class="btn btn-primary">Submit</button>
</form>
질문 내용에서는 회원 이름만 빈 값으로 해놓고 나머지는 빈값이 아니여도 4개 모두가 출력된다고 하셨습니다.
위에서 작성한 코드 기준 각 검증이 실패할 때에만 출력합니다.


강의에서 제공해드리는 프로젝트 코드에서 코드를 수정한 내역은 MemberForm클래스와 createMemberForm.html 두 군데 뿐입니다.
수정한 코드를 올려주시면 확인해보겠습니다.
.
감사합니다.
0
제가 하였던 방식을 참고해보시고,
이전 질문 내역을 보면 MVC 2편도 수강하신 것 같습니다. MVC2편에서도 유효성 검사를 다루니 참고하시면 좋을 것 같습니다.
MVC2편에서 설명하신 방법과 약간의 차이는 있지만(메시지 파일을 사용하는 것과 @Valid , @Validated 등) 2편 강의에서의 동작도 수량/가격 둘 다 검증로직에서 유효성 체크 실패하는 것만 표시됩니다.
해결이 안될 경우 댓글남겨주세요 :)
sdk 설정 오류
0
53
2
오탈자 - @Transactional
0
56
1
src/test/resources 테스트 경로 문제
0
50
1
상품 등록후 H2 db 출력 순서 바꿀 수 있나요?
0
64
1
MemberRepositoryTest 실행오류
0
81
1
boot 4.x >>> trasasction rolled back log & p6spy(영한님, 수업 자료 업데이트 해주시면 감사하겠습니다!!)
1
183
2
강의 마지막 QueryDSL 사용 부분 질문있습니다
1
141
2
클라이언트에서 isbn과 author 수정 요청을 한 경우에 대해 질문드립니다.
0
51
1
도메인 모델 패턴 vs 트랜잭션 스크립트 패턴
0
71
1
기본 생성자
0
60
1
h2 DB 연결시 jdbc url 변경 이유가 궁금합니다.
0
102
1
멤버서비스테스트 부분에서 막힙니다.
0
165
4
실무에서도 EntityManager를 이용해서 많이 작업하는 편일까요?
0
116
1
초반에 h2 다운로드 과정 꼭 필요한가요?
0
120
2
자신 필드에도 get으로 접근하는 이유가 있을까요?
0
114
1
24분 27초 연관관계 편의 메서드 위치
0
113
1
단건 주문만 가능하게 한건 의도한 부분이신가요?
0
109
2
빌드 툴, Gradle
0
59
1
h2연결은 된 것 같은데 엔티티 테이블까지 작성 후 확인해보아도 테이블이 안보입니다
0
77
2
Repository에서 EntityManager 주입 방식 차이
0
90
1
롬복과 사용자 정의 setter 메서드
0
72
1
주문 목록 조회 fetch join 질문드립니다
0
82
1
dirty checking 질문드립니다.
0
83
1
동시성 관련 질문입니다
0
75
1





