我使用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中处理异常。