클라이언트 값 체크 : 자바스크립트를 이용해서 체크한 후 서버로 보내는 방식
Validator 인터페이스 : 상속받아 구현을 하여 서버(컨트롤러)에서 유효성검사를 사용한다.
@Override
public boolean supports(Class<?> clazz) {
// TODO Auto-generated method stub
return Student.class.isAssignableFrom(clazz);
}
@Override
public void validate(Object obj, Errors errors) {
// TODO Auto-generated method stub
System.out.println("validate()");
Student student = (Student) obj;
String studentName = student.getName();
if (studentName == null || studentName.trim().isEmpty()) {
System.out.println("studentName is null or empty");
errors.rejectValue("name", "trouble");
}
int studentId = student.getId();
if (studentId == 0) {
System.out.println("studentId is 0");
errors.rejectValue("id", "trouble");
}
}
Validator의 객체를 생성한다.
2가지 메서드를 구현하는데 supports메서드는 검증을 도와주는 형태로 사용된다.
validate에서는 Object를 받는데 이는 모든 객체를 받기 위해서이며 이를 위해 업캐스팅을 해주어야 한다.
에러를 알려주기 위해서는 errors.rejectValue()를 사용해서 알려주어야 한다.
ValidationUtils 클래스 : name 변수명을 통해 찾는다.
ValidationUtils.rejectIfEmptyOrWhitespace(errors, "name", "trouble");
@Vaild, @InitBinder : hibernate-validator 라이브러리를 추가하여 사용할 수있다.
@RequestMapping("/student/create")
public String studentCreate(@Valid Student student, BindingResult result) {
String page = "createDonePage";
// StudentValidator validator = new StudentValidator();
// validator.validate(student, result);
if(result.hasErrors()) {
page = "createPage";
}
return page;
}
@InitBinder
protected void initBinder(WebDataBinder binder) {
binder.setValidator(new StudentValidator());
}
@
댓글