java在处理MethodArgumentNotValidException时如何访问请求对象?
我正在处理请求对象验证失败后抛出的MethodArgumentNotValidException
。所有常用的东西都准备好了:@Valid
,@ControllerAdvice
,以及一个扩展的ResponseEntityExceptionHandler
,在其中我覆盖了handleMethodArgumentNotValid()
碰巧,我需要访问相同的请求对象,以便形成定制的错误响应。一种方法是在请求到达控制器之前拦截请求,并创建带有所需字段的@RequestScope
bean,以防稍后验证失败
有更好的办法吗
# 1 楼答案
在
MethodArgumentNotValidException
类中应该有错误字段。您的handleMethodArgumentNotValid
函数可能如下所示考虑到您有一个
CustomInputErrorResponse
类,它为自定义消息和错误字段名接受两个参数# 2 楼答案
多亏了一位同事的建议,我发现} 的方法,它返回经过验证的对象。从方法签名(
MethodArgumentNotValidException
中的BindingResult
有一个名为^{Object getTarget()
)可以看出,返回值需要一个强制转换