我有一個簡單的MVC控制器我與我的自定義註解註釋:定義註解的Spring MVC ResultBinding
@PreAuthorize("hasRole('GESTION_BENEFICIAIRE')")
@AuthentificationForte(otp = "#{args[0]}",transactionId="#{args[1]}")
@RequestMapping(value = "/ajouter", method = { RequestMethod.POST, RequestMethod.GET })
public String addBeneficiaire(@ModelAttribute("beneficiaireForm") BeneficiaireForm beneficiaireForm,
BindingResult result, Model model, Principal principal) {
[...]
}
我的自定義註解與拋出一個RuntimeException
當驗證不成功一個方面的聯繫。
@Around(value = "@annotation(annotation)")
public Object verifyOtp(final ProceedingJoinPoint jointPoint,
final AuthentificationForte annotation) throws Throwable {
try {
if (authentificationForteEnabled) {
[...]
} else {
throw new AuthentificationForteException();
}
} else {
return jointPoint.proceed();
}
} finally {
}
}
所以現在的行爲是,當驗證失敗時,我被重定向到500錯誤頁面。我的目標是留在同一個頁面,並添加一個拒絕的消息給BindingResult
:
result.rejectValue("suiteRib", "BeneficiaireForm.InvalidRib");
我還沒有找到一種方法來做到這一點,我發現的唯一方法是改變我所有的邏輯而不是使用註釋,而在控制器代碼中使用帶有try/catch的驗證服務。
有什麼辦法來處理這個問題,並訪問綁定結果並添加錯誤消息時,方面引發此異常?