栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

在控制器方法之前调用Spring MVC验证异常处理程序

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

在控制器方法之前调用Spring MVC验证异常处理程序

您会注意到抛出了异常

ModelAttributeMethodProcessor#resolveArgument(..)
。它发生在这里

if (binder.getBindingResult().hasErrors()) {    if (isBindExceptionRequired(binder, parameter)) {        throw new BindException(binder.getBindingResult());    }}

因此,如果解析date参数时发生错误(或其他任何错误)并

isBindExceptionRequest(..)
返回true,则将它们
BindingResult
包装在中
BindException
并引发。那是什么
isBindExceptionRequires(..)

这样实现

protected boolean isBindExceptionRequired(WebDataBinder binder, MethodParameter parameter) {    int i = parameter.getParameterIndex();    Class<?>[] paramTypes = parameter.getMethod().getParameterTypes();    boolean hasBindingResult = (paramTypes.length > (i + 1) && Errors.class.isAssignableFrom(paramTypes[i + 1]));    return !hasBindingResult;}

和javadoc的说

返回

true
如果下一个方法参数不是Errors类型。

换句话说,如果这样声明您的处理程序方法

public String submitForm(@Valid @ModelAttribute(MODEL_ATTRIBUTE_STUDENT) StudentDTO edited,    BindingResult bindingResult, RedirectAttributes attributes) {

BindException
将不被拆毁因为有类型的参数
Errors
BindingResult
是一个子类型)旁边的
@ModelAttribute
参数。

这意味着您正在从其他一些处理程序方法中获取异常,而您没有

BindingResult
以下命令对象参数。或者您的配置中还有其他内容没有显示给我们。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/417150.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号