[SPRING] JSR-303과 Spring Validator 클래스를 서비스 레이어에 결합하는 방법은 무엇입니까?
SPRINGJSR-303과 Spring Validator 클래스를 서비스 레이어에 결합하는 방법은 무엇입니까?
모델 클래스가 있어요.
public class Account {
@Email
private String email;
@NotNull
private String rule;
}
스프링 밸리데이터
public class AccountValidator implements Validator {
@Override
public boolean supports(Class aClass) {
return Account.class.equals(aClass);
}
@Override
public void validate(Object obj, Errors errors) {
Account account = (Account) obj;
ValidationUtils.rejectIfEmpty(errors, "email", "email.required");
ValidationUtils.rejectIfEmpty(errors, "rule", "rule.required");
complexValidateRule(account.getRule(), errors);
}
private void complexValidateRule(String rule, Errors errors) {
// ...
}
}
나는 내 서비스에서 뛰다.
AccountValidator validator = new AccountValidator();
Errors errors = new BeanPropertyBindingResult(account, "account");
validator.validate(account, errors);
@Email, @NotNull (JSR-303) 유효성 검사 프로세스 제약 조건을 추가하고 AccountValidator에서이 규칙을 설명하지 않을 수 있습니까?
어떻게 작동하는지 알 수 있습니다 @ 스프링 컨트롤러에서 유효하지만 서비스 레이어는 무엇입니까? 가능한가? 적절한 방법으로 그러한 종류의 검증을 수행하는 방법은 무엇입니까? Hibernate Validator를 사용해야합니까?
해결법
-
==============================
1.Spring은 두 가지 유효성 검사 API를 병합하기위한 어댑터를 제공합니다. 더 자세한 정보는 현재 Spring JavaDoc을 참조하십시오.
Spring은 두 가지 유효성 검사 API를 병합하기위한 어댑터를 제공합니다. 더 자세한 정보는 현재 Spring JavaDoc을 참조하십시오.
가능한 구현은
public class AccountValidator implements Validator { private final SpringValidatorAdapter validator; public AccountValidator(SpringValidatorAdapter validator) { super(); this.validator = validator; } @Override public boolean supports(Class aClass) { return Account.class.equals(aClass); } @Override public void validate(Object obj, Errors errors) { //jsr303 validator.validate(obj, errors); //custom rules Account account = (Account) obj; complexValidateRule(account.getRule(), errors); } private void complexValidateRule(String rule, Errors errors) { // ... } }
from https://stackoverflow.com/questions/26501348/how-to-combine-jsr-303-and-spring-validator-class-in-a-service-layer by cc-by-sa and MIT license
'SPRING' 카테고리의 다른 글
[SPRING] 스프링 배치에서 x 번 반복 (0) | 2019.02.09 |
---|---|
[SPRING] Spring-WS의 응답 페이로드에 첨부 파일을 추가하려면 어떻게해야합니까? (0) | 2019.02.09 |
[SPRING] spring-boot : 패키징에 대한 종속성 제외 (0) | 2019.02.09 |
[SPRING] Spring MVC의 유효성 검사 (0) | 2019.02.09 |
[SPRING] JSF + Spring + Hibernate에서 DTO를 사용하는 방법 (0) | 2019.02.08 |