用于验证每个控制器中的请求的重复代码

时间:2017-06-04 16:41:41

标签: java spring

我有一堆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

2 个答案:

答案 0 :(得分:2)

Arian是对的。但是如果你需要验证不是所有的方法和控制器(你可以调整什么应该验证和在哪里)你可以通过这样的弹簧方面做到这一点 https://www.abtosoftware.com/blog/form-validation-using-aspect-oriented-programming-aop-in-spring-framework

答案 1 :(得分:0)

您可以定义一个Spring MVC Interceptor,顾名思义就是在您的呼叫到达控制器之前拦截它们,您可以在此时执行验证。