2
我正在使用JSR303方法驗證器進行擴展,以自動驗證輸入到我的服務層,並提供一些幫助。確實缺少的一件事是進行交叉參數驗證的能力,即例如比較兩個日期參數。我如何通過hibernate方法驗證來實現?可能嗎 ?任何其他推薦的方法來解決這個問題使用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;
}
}