Debugging의 중요성
1. 개발자 도구, 소스 코드 확인하기
2. breakpoint 잡기
3. server 돌리면서 debugging(벌레 버튼) 클릭
서버 측에서 validation 처리하는 법
클라이언트에서 submit 전에 JavaScript로 validation을 검증하지만, command 객체를 사용하면 handler 작동 전 binding 작동하는데, 이때 검증을 어떻게 할 것인가?
package com.lec.spring.domain;
import org.springframework.validation.Errors;
import org.springframework.validation.ValidationUtils;
import org.springframework.validation.Validator;
public class PostValidator implements Validator {
@Override
public boolean supports(Class<?> clazz) {
System.out.println("supports(" + clazz.getName() + ") 호출");
// ↓ 검증할 객체의 클래스 타입인지 확인 : Post = clazz; 가능 여부
boolean result = Post.class.isAssignableFrom(clazz);
System.out.println(result);
return result;
}
@Override
public void validate(Object target, Errors errors) {
Post post = (Post) target;
System.out.println("validate() 호출 : " + post);
String user = post.getUser();
if(user == null || user.trim().isEmpty()){
errors.rejectValue("user", "작성자는 필수입니다");
}
// ValidationUtils 사용
// 단순히 빈(empty) 폼 데이터를 처리할때는 아래 와 같이 사용 가능
// 두번째 매개변수 "subject" 은 반드시 target 클래스의 필드명 이어야 함
// 게다가 Errors 에 등록될때도 동일한 field 명으로 등록된다.
ValidationUtils.rejectIfEmptyOrWhitespace(errors, "subject", "글 제목은 필수입니다");
}
}