在ErrorHandler中处理表单验证结果

时间:2016-11-06 11:38:23

标签: spring validation spring-boot

我使用spring-boot作为后端服务器。它有数十种行动方法。像往常一样,其中一些包含验证。实际上我使用BindingResult并返回验证错误以返回Http 400状态。

@CrossOrigin
@RestController
public class ValidationTestController {

    @RequestMapping(value = {"/validation-test", "/validation-test/"}, method = RequestMethod.POST)
    @ResponseBody
    public ResponseEntity<String> login(@RequestBody @Valid final TestData data, final BindingResult result) {

        if (result.hasErrors()) {
            return new ResponseEntity<>("Sorry incoming data is not valid!", HttpStatus.BAD_REQUEST);
        }

        return new ResponseEntity<>("OK!", HttpStatus.OK);
    }

    private static final class TestData {

        @NotNull
        private String value;
    }
}

我的目标是删除以下内容:

if (result.hasErrors()) {
    return new ResponseEntity<>("Sorry incoming data is not valid!", HttpStatus.BAD_REQUEST);
}

恕我直言,这是一个跨认识的问题,如身份验证和审计。我想在一个全局的ErrorHandler方法中处理它。可以抛出CustomValidationException在执行方法之前。所以我可以在ErrorController中处理异常。

1 个答案:

答案 0 :(得分:1)

是的,你可以使用来自Spring的@ExceptionHandler ControllerAdvice在一个地方集中异常处理逻辑。

您可以查看here