1
如何使用JSR-303驗證方法參數並在參數無效時拋出異常?JSR 303.驗證方法參數並拋出異常
例如這樣的: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驗證程序4.1.0.Final
謝謝。所以它意味着用@ Valid語句註釋的參數本身不會拋出異常,如果對象是無效的?我需要手動創建一個方面(AOP),'@pointcut'指向方法參數中的所有'@ Valid'註解?當發現這樣的註釋時,我需要創建'Validator'實例並手動驗證用'@ Valid'註釋的方法參數值? – MyTitle 2013-02-12 11:47:51
難道你沒有AspectJ的例子嗎? – MyTitle 2013-02-12 11:51:37
我不幸沒有使用AspectJ的例子。但是一般方法應該與GitHub上的示例項目相同:攔截調用,驗證參數,繼續調用,驗證返回值,如果任一驗證步驟失敗,則拋出'ConstraintViolationException'。 – Gunnar 2013-02-12 14:34:02