방카@Dev
[Spring]Validator를 이용한 유효성 검사 본문
1. Validator 인터페이스 구현
public class StudentValidator implements Validator {
@Override
public boolean supports(Class<?> arg0) {
// TODO Auto-generated method stub
return Student.class.isAssignableFrom(arg0);
}
@Override
public void validate(Object obj, Errors errors) {
System.out.println("validate()");
Student student = (Student)obj;
// 1번째 방법
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");
}
}
}
2. ValidationUtils 객체 메서드 사용
public class StudentValidator implements Validator {
@Override
public boolean supports(Class<?> arg0) {
// TODO Auto-generated method stub
return Student.class.isAssignableFrom(arg0);
}
@Override
public void validate(Object obj, Errors errors) {
System.out.println("validate()");
Student student = (Student)obj;
// 2번째 방법
ValidationUtils.rejectIfEmptyOrWhitespace(errors,"name","trouble","studentName is null or empty");
//에러, 필드, 에러코드, 디폴트 에러메세지
int studentId = student.getId();
if(studentId == 0) {
System.out.println("studentId is 0");
errors.rejectValue("id","trouble");
}
}
}
3. @InitBinder를 이용한 초기화
<pom.xml>에 hibernate 추가
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-validator</artifactId>
<version>4.2.0.Final</version>
</dependency>
<!-- 오류 발생으로 인한 dependency 추가 -->
<dependency>
<groupId>javax.xml.bind</groupId>
<artifactId>jaxb-api</artifactId>
<version>2.3.1</version>
</dependency>
<dependency>
<groupId>org.glassfish.jaxb</groupId>
<artifactId>jaxb-runtime</artifactId>
<version>2.3.1</version>
</dependency>
@RequestMapping(value="/createDonePage", method=RequestMethod.POST)
public String studentCreate(@ModelAttribute("student")@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());
}
'BackEnd > Spring' 카테고리의 다른 글
[Spring]JDBC Template 정리 (0) | 2024.06.20 |
---|---|
[Spring]게시판 파일 업로드 라이브러리(COS) (1) | 2024.06.20 |
[Spring]IntelliJ 자바 버전 변경하는 방법 (0) | 2024.06.15 |
[Spring]MVC에서 데이터를 주고 받는 방법 (0) | 2024.06.12 |
[Spring]AOP(Aspect Oriented Programming)_스프링 핵심원리(고급편) (0) | 2024.06.11 |