🔥 Vamos/Spring
0106 | 스프링의 정석 :: 2-31 (local Validator 실습)
unikue
2023. 1. 7. 00:50
0104 | 스프링의 정석 :: 2-31 (Validator)
1229 | 스프링의 정석 :: 2-30 (데이터 변환기능) 1228 | 스프링의 정석 :: 2-30 (데이터 변환기능) 데이터의 변환과 검증(1) 1. WebDataBinder : 브라우저를 통해서 요청 받은 값이 실제 객체에 바인딩 될 때
ala-nueva.tistory.com
public String save(User user, BindingResult result, Model m) throws Exception{ // 입력값을 모두 담을수 없으므로 User 클래스를 만들어서 private으로 멤버변수 선언 + getter,setter추가
System.out.println("result="+result);
System.out.println("user="+user);
//수동검증 Validator객체를 직접 생성하고 validate()를 직접 호출하는 것
UserValidator userValidator = new UserValidator();
userValidator.validate(user, result);// BindingResult는 errors 인터페이스의 자손이라 그냥 써도 됨.
@InitBinder
public void toDate(WebDataBinder binder) {
ConversionService conversionService=binder.getConversionService();
System.out.println("conversionService="+conversionService);
binder.registerCustomEditor(String[].class, "hobby", new StringArrayPropertyEditor("#"));
// @InitBinder 붙은곳에 자동검증
binder.setValidator(new UserValidator()); // userValidator를 webDataBinder의 local Validator로 등록 (local validator는 컨트롤러 내에서만 사용 가능)
}
// 검증값 앞에다가 @Valid 붙이기.
public String save(@Valid User user, BindingResult result, Model m) throws Exception{ // 입력값을 모두 담을수 없으므로 User 클래스를 만들어서 private으로 멤버변수 선언 + getter,setter추가
System.out.println("result="+result);
System.out.println("user="+user);
✔ 자동검증에 쓰이는 @Valid는 스프링이 아닌 자바표준애너테이션이므로 maven repo에서 가져다가 추가해야함
👉아래 등록과정을 마치면 애너테이션을 import할 수 있게 된다.
👉 Validator의 검증으로 인해 예외의 경우로 가입시도를 할 경우, 설정해둔대로 registorForm화면이 반환된다.
이 파트 들어서 복잡해지니 로직 깨지고 이해도가 떨어져서 자꾸 진도가 안나간다 ㅠㅠ 처음 보니 어쩔수 없긴 하다만. 한시간짜리 인강을 끊어 듣는 중...