이번 포스트는 SimpleFormController의 onBindAndValidate()에서 이메일 혹은 기타 입력값의 형식 체크 하여 값을 view로 넘겨주는 것입니다.
입력값 비교를 위해 Perl5Util을 사용했습니다.(이것에 대한 자세한 것은 더 알아봐야 겠습니다.ㅠㅠ)
jakarta-oro-2.0.8.jar를 lib폴더에 넣고 임포트 시킵니다.
import org.apache.oro.text.perl.Perl5Util;
준비가 끝났습니다. 이것만 있으면 되더군요…
정규식 표현을 상수로 정의 하였습니다.
아우 정규식 어려웠다는… (정규식에 대한 것은 검색해 보시고 이것저것 적용을 해보는 게…)
// 정규식 표현
private static final String EMAIL_REGEXP = “/^[a-z0-9]+([_\\.-][a-z0-9]+)*@([a-z0-9]+([\\.-][a-z0-9]+)*)+\\.[a-z]{2,}$/i”; <- 이메일 형식
private static final String ENAME_REGEXP = “/^[a-zA-Z]+$*/”; <- 영문명만들어오게
private static final String NAME_REGEXP =”/^[ㄱ-ㅣ가-힣]+$*/”; <- 한글만 입력받게
이렇게 선언을 해주고
onBindAndValidate() 함수안에서 사용을 합니다. 공백값과 함께 체크를 하기 위해서 onBindAndValidate()안에서 사용하면 공백처리등을 바로 할 수 있더군요.(신기했습니다–)
Perl5Util perl5Util = new Perl5Util(); 이렇게 생성을 하고
각각에 대해서
if(forumIct.getEmail() != null){
if(!perl5Util.match(EMAIL_REGEXP, forumIct.getEmail())){
errors.rejectValue(“email”, “errors.invalid”, new String[]{“email”}, “”);
}
}
else {
ValidationUtils.rejectIfEmpty(errors, “email”, “errors.required”, new String[]{“email”}, “”);
}
이렇게 체크를 했습니다. 공백이 들어왔을 때와 잘못된 값이 들어 왔을 때.. 구분해서 error에 값을 보내 주어야 해서.
다른 방법이 있다면 알려주세요.. 처음 해보는 거라서..^^;
spring framework는 controller를 잘 써야 하더군요.. 스프링 만쇄이~~