Как использовать параметры метода проверки JSR-303 и исключать исключение, если параметр недействителен?JSR 303. Validate method parameter and throw exception
Например, например: public void createUser(@ValidOrThrowException User user) {...}
?
На данный момент, я проверяю каждый параметр метода в теле метода, как
public void createUser(User user) {
ConstraintViolations violations = Validator.validate(user);
if (!violations.isEmpty()) {
throw new IllegalArgumentException(createExceptionMessage(violations));
}
...//business logic
}
, и я думаю, что это некрасиво.
P.S. В качестве эталонной реализации я использую Hibernate-validator 4.1.0.Final
Спасибо. Таким образом, это означает, что параметр, аннотированный аннотацией @ @ Valid, сам не вызывает исключение, если объект недействителен? И мне нужно вручную создать аспект (AOP), с '@ pointcut', указывающим на все аннотации @ @ Valid в параметрах методов? И когда такая аннотация найдена, мне нужно создать экземпляр «Validator» и вручную проверить значение параметра метода, аннотированное с помощью '@ Valid'? – MyTitle
У вас нет примера с AspectJ? – MyTitle
У меня, к сожалению, нет примера, в котором используется AspectJ. Но общий подход должен быть таким же, как в примерах проектов на GitHub: перехватить вызов, проверить параметры, продолжить вызов, проверить возвращаемое значение, вывести «ConstraintViolationException», если сбой одного из шагов проверки. – Gunnar