我有一堆Rest控制器。例如:
@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传递给GroupDto
Rest端点时验证Create
。
答案 0 :(得分:2)
Arian是对的。但是如果你需要验证不是所有的方法和控制器(你可以调整什么应该验证和在哪里)你可以通过这样的弹簧方面做到这一点 https://www.abtosoftware.com/blog/form-validation-using-aspect-oriented-programming-aop-in-spring-framework
答案 1 :(得分:0)
您可以定义一个Spring MVC Interceptor,顾名思义就是在您的呼叫到达控制器之前拦截它们,您可以在此时执行验证。