2
JSR303 메서드 유효성 검사 도구를 사용하여 약간의 도움말을 통해 자동으로 서비스 계층의 입력을 검사합니다. 확실하게 누락 된 한 가지는 교차 매개 변수 유효성 검사를 수행하는 것입니다. 즉, 예를 들어 두 개의 날짜 매개 변수를 비교합니다. 최대 절전 모드 방법 유효성 검사를 통해이를 어떻게 달성 할 수 있습니까? 가능한가? 이 문제를 해결하는 다른 권장 방법은 무엇입니까?Hibernate (JSR 303) 메서드 유효성 검사를 사용하여 매개 변수 비교
이 내 측면
public abstract aspect ValidationAspect {
@Inject
private Validator validator;
protected ParameterValidationError[] validateParameters(
JoinPoint jp) {
MethodSignature methodSignature = (MethodSignature)jp.getSignature();
Method targetMethod = methodSignature.getMethod();
Object targetObj = jp.getThis();
Object[] args = jp.getArgs();
String[] names = ((CodeSignature)jp.getSignature()).getParameterNames();
MethodValidator methodValidador = validator.unwrap(MethodValidator.class);
Set<? extends MethodConstraintViolation<?>> validationErrors = methodValidador.validateAllParameters(
targetObj,
targetMethod,
args);
ParameterValidationError[] output = new ParameterValidationError[validationErrors.size()];
int idx = 0;
for (MethodConstraintViolation<?> mcv : validationErrors) {
output[idx++] = new ParameterValidationError(
mcv.getParameterIndex(),
names[mcv.getParameterIndex()],
mcv.getInvalidValue(),
mcv.getMessage());
}
return output;
}
}