不抛出MethodArgumentNotValidException

use*_*248 3 java validation spring

我的控制器如下所示:

@RequestMapping(value = "/cars/{types}", method = RequestMethod.PUT,
        headers = "Accept=application/json")
@ResponseStatus(HttpStatus.OK)
public void startEngine(
        @PathVariable @Min(0) String types, @RequestBody @Valid someObject request, BindingResult result)
        throws MethodArgumentNotValidException {

    if(result.hasErrors())
    {
        System.out.println("Error");
        //Should I be throwing MethodArgumentNotValidException here? And if so how? I don't know how to retrieve the first parameter for it's constructor (MethodParameter object)
    }
    //Controller code
}
Run Code Online (Sandbox Code Playgroud)

因此,在验证我的结果对象在验证期间是否遇到任何错误之后,我怎么能抛出MethodArgumentNotValidException?或者Spring应该在验证期间抛出该异常?

Sot*_*lis 9

如果我没记错的话,MethodArgumentNotValidException 只有在没有为带注释的参数提供Errors(here,BindingResult)参数时,Spring 才会抛出@Valid.

如果你愿意,你可以自己扔掉它.

  • 但它仍然不适合我。我在 ControllerAdvice 中扩展了 ResponseEntityExceptionHandler,并在那里覆盖了方法 handleMethodArgumentNotValid。在这里我想返回自定义错误消息,但它不起作用。Spring 正在抛出默认消息结构。 (3认同)