inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

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

스터디 개설

Errors나 BindingResult 사용시 주의할점이 있습니다.

4922

Yang

작성한 질문수 5

9

디버그와 원인을 찾는데 꽤 많은 시간이 들어 혹시 제가 겪었던 상황과 비슷한 일을 겪는 분이 계실 것 같아 적었습니다.

스터디 생성시 이미 존재하는 path 요청을 날렸는데 제가 생각했던 대로 동작을 하지 않았습니다.

제가 예상했던 동작은 validator를 통해 이미 존재하는 경우 errors.rejectValue()로 필드에 에러코드를 추가하였으니 Post요청시 에러가 존재하니 study/form를 보여주고 

등록 화면에서는 validator에서 적어준 메세지가 보여야 한다 였는데 예상과는 다르게 whitelabel 에러 페이지와 함께  BindException 발생하였습니다.

org.springframework.validation.BindException: org.springframework.validation.BeanPropertyBindingResult: 1 errors

디버그를 해봐도 validator에서 에러코드 추가까지는 정상 동작하는데 post에서 break point로 잡히지 않았습니다.

영상을 시청하기 전에 코드를 작성하여 잘못 구현하였나 싶어 완성된 코드와 비교해보니 post요청에서 Model 인스턴스를 파라미터로 선언할 때 Errors보다 먼저 선언한 것을 발견하였습니다.

@PostMapping("/new-study")
public String newStudySubmit(@CurrentUser Account account, @Valid StudyForm studyForm, Model model,Errors errors) {
if (errors.hasErrors()) {
model.addAttribute(account);
return "study/form";
}
// 새 스터디 등록 후 redirect...
}

@PostMapping("/new-study")
public String newStudySubmit(@CurrentUser Account account, @Valid StudyForm studyForm, Errors errors, Model model) {
if (errors.hasErrors()) {
model.addAttribute(account);
return "study/form";
}
// 새 스터디 등록 후 redirect...
}

그래서 파라미터의 순서에 영향을 받는다고 하고 넘어가려다 스프링 레퍼런스를 찾아보고 확실히 할 수 있었습니다.

Errors, BindingResult : For access to errors from validation and data binding for a command object (that is, a @ModelAttribute argument) or errors from the validation of a @RequestBody or @RequestPart arguments. You must declare an Errors, or BindingResult argument immediately after the validated method argument.

https://docs.spring.io/spring/docs/current/spring-framework-reference/web.html#mvc-ann-arguments

thymeleaf java spring-boot spring JPA

답변 1

7

백기선

네 말씀하신대로 BindingResult나 Errors는 바인딩 받는 객체 바로 다음에 선언해야 합니다. 스프링 MVC 강좌에서 설명드렸는데 아마 이 강의부터 듣고 계신거 같네요. 이런식으로 이론을 채워 나가는 학습 방법도 좋은 방법입니다. 공유해 주셔서 감사합니다.

Study 개설하는 로직에 대해서 궁금점이 있습니다.

0

55

1

앱 재시작 후 회원가입

0

103

1

app.host 관련 질문이 있습니다

0

97

1

강의 버전 정보

0

125

1

event, study 참조

0

220

2

비밀번호 변경 로직 질문있습니다.

0

135

1

프로필 수정 처리 merge 질문입니다.

0

108

1

회원가입 성공 후 redirect이동시 권한 질문

0

493

3

HtmlEmailService 개발하다 생긴 의문입니다

0

250

2

postgreSql 연결하여 JPA 를 통해 테이블 생성시 ZONE 테이블 생성에서 에러가 납니다

0

431

2

수업질문 [긴급] 로그인안되는 문제 말씀해주시는 부분 반영해서 최종 질문드립니다

0

260

2

[긴급-재업로드]수업질문 로그인 안 되는 문제

0

235

1

[긴급] 로그인해도 네비게이션 바가 안 바뀌고 있습니다!! 로그인이 안 됩니다 도와주세요

0

277

1

cropper 오류 문제로 질문드립니다..

0

288

2

authentication관련 질문...

0

495

2

모임참가 취소 할때 로직 질문

0

350

3

안녕하세요 기선님 질문이있습니다..

0

229

1

HTML코드 및 강의 중간자료들

0

679

3

springSecurity

0

522

2

버전 질문입니다.

0

302

1

부트스트랩, css

0

353

2

영속성 컨텍스트 질문

0

248

2

다시 강의를 보니 드는생각..

0

352

2

5:50에 나오는 HTML코드는 어디서 찾을 수 있나여?

0

313

1