我有一堆休息控制器的驗證請求重複代碼。例如:對於每個控制器
@RequestMapping(path="/{groupId}",method=RequestMethod.PUT)
public void update(@RequestBody GroupDto groupDto, @PathVariable long groupId, Principal principal, BindingResult result) throws IOException {
updateGroupDtoValidator.validate(groupDto, result);
if (result.hasErrors()) {
throw new ValidationException();
}
groupService.update(groupId, groupDto, principal.getName());
}
在每個方法控制器中,我必須重複進行調用以驗證並檢查結果是否有錯誤。有沒有更好的辦法?是否可以配置@Validated以驗證來自客戶端的輸入數據?
UPDATE1我有幾個驗證。例如,我有UpdateGroupDtoValidator
,它在傳遞給Update
Rest端點時驗證GroupDto對象。我還有一個驗證CreateGroupDtoValidator
時DTO傳遞給Create
REST端點這驗證GroupDto
。
這可能是一些做援助https://stackoverflow.com/questions/12195015/java-annotation-to-execute-some-code-before-and-after-method 雖然這是你正在尋找可能的內容:Spring MVC的攔截器( http://viralpatel.net/blogs/spring-mvc-interceptor-example/) –
你應該考慮使用@Valid註解這裏http://www.baeldung.com/spring-mvc-custom-validator解釋。 – Mustafa
@Mustafa AFAIK'@ Valid'根據它所屬的類中使用的註釋驗證對象。我無法做到這一點,因爲我根據不同的場景對一個類的對象進行了不同的驗證。請參閱Update1 –