-
[SpringBoot] Errors ์ธํฐํ์ด์ค์ ๊ตฌํ์ฒด์ ์๋ฌ ๋ฉ์์ง ์ ์ฅ ์์นBack-end/TIL 2022. 4. 4. 16:13
๐ ์ํฉ
@PostMapping("/user/sign-up") public String userSignUp(@Valid UserDto.UserSignUpReqDto userSignUpReqDto, Errors errors, Model model) { //ํ์๊ฐ์ ์คํจ if (errors.hasErrors()) { return "user/sign-up"; } //ํ์๊ฐ์ ์ฑ๊ณต (๋ก๊ทธ์ธ ์๋ฃ ํ์ด์ง๋ก ๋ฆฌ๋ค์ด๋ ์ ) return "user/login"; }
- @Valid์ ์ํด ๋ฐ์ํ Validation Error๋ Errors ์ธํฐํ์ด์ค ํ์ ์ ๊ฐ์ฒด์ ๋ด๊ธด๋ค.
- ํด๋น ๊ฐ์ฒด์ Error๊ฐ ์กด์ฌํ๋์ง ์ฒดํฌํ์ฌ ์ ํจ์ฑ ๊ฒ์ฌ ์ฒ๋ฆฌ๋ฅผ ํ ์ ์๋ค.
๐ Errors๋ ์ธํฐํ์ด์ค์ธ๋ฐ, ๊ทธ๋ผ ํด๋น ์ธํฐํ์ด์ค์ ๊ตฌํ์ฒด๋ ๋ฌด์์ผ๊น?
- Errors ์ธํฐํ์ด์ค๋ ํน์ Object์ ๋ํ data-binding๊ณผ validation errors์ ๋ํ ์ ๋ณด๋ฅผ ๋ด๊ณ ๋ณด์ฌ์ฃผ๋ ์ญํ ์ ํ๋ค.
Errors ๊ด๋ จ ๊ณ์ธต ๊ตฌ์กฐ๋ - ๊ณ์ธต ๊ตฌ์กฐ๋๋ฅผ ๋ณด๋ฉด, Errors ์ธํฐํ์ด์ค์ ๊ตฌํ์ฒด๋ BeanPropertyBindingResult ํด๋์ค์์ ์ ์ ์๋ค. ํด๋น ํด๋์ค์ ์ค๋ช ์ ๋ณด๋ฉด, Errors์ BindingResult ์ธํฐํ์ด์ค์ default ๊ตฌํ์ฒด๋ผ๊ณ ๋์์๋ค.
๐ ๊ทธ๋ ๋ค๋ฉด, @NotEmpty(message = "๋น ๊ฐ ํ์ฉ ๋ถ๊ฐ") ์์ ์ค์ ํ ๋ฉ์์ง๋ ์ด๋์ ์ ์ฅ๋๋ ๊ฒ์ผ๊น?
Errors ์ธํฐํ์ด์ค ํ์ ์ ๊ฐ์ฒด errors - Errors ํ์ ๊ฐ์ฒด์ ํ๋๋ฅผ ๋ณด๋ฉด, ArrayList ํ์ ์ errors ๋ฆฌ์คํธ๊ฐ ์กด์ฌํ๊ณ , ํด๋น ๋ฆฌ์คํธ์ ์์๋ก ์ ์ฅ๋์ด ์๋ ๊ฐ์ฒด์ ํ๋ ์ค defaultMessage์ ์ ์ฅ์ด ๋์ด์๋ค.
- ArrayList ํ์ ์ errors ๋ฆฌ์คํธ๋ AbstractBindingResult ํด๋์ค์ ์กด์ฌํ๊ณ , List<T>์ ์์๋ค์ ํ์ ์ ObjectError์ด๋ค. (BeanPropertyBindingResult ํด๋์ค๊ฐ AbstractBindingResult ํด๋์ค๋ฅผ ์์๋ฐ์)
//AbstractBindingResult ์ถ์ ํด๋์ค public abstract class AbstractBindingResult extends AbstractErrors implements BindingResult, Serializable { ... private final List<ObjectError> errors = new ArrayList<>(); ... }
ObjectError ๊ด๋ จ ๊ณ์ธต ๊ตฌ์กฐ๋ - defaultMessage ํ๋๋ ๋ฐ๋ก ObjectError ํด๋์ค๊ฐ ์์๋ฐ๋ DefaultMessageSourceResolvable ํด๋์ค์ ์กด์ฌํ๋ค.
'Back-end > TIL' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ