mirror of
https://github.com/kaka111222333/kaka111222333.github.io.git
synced 2025-12-22 01:35:24 +08:00
创建博客
This commit is contained in:
56
_posts/2017-05-27-mvc-validator.md
Normal file
56
_posts/2017-05-27-mvc-validator.md
Normal file
@@ -0,0 +1,56 @@
|
||||
---
|
||||
title: 记一次在spring-mvc中踩坑的经历
|
||||
tags: spring mvc java
|
||||
categories: java
|
||||
---
|
||||
|
||||
今天打算在项目中加入数据验证功能,具体可参考 [数据验证][validator]
|
||||
|
||||
过程无须赘述
|
||||
|
||||
配置完成后,奇怪的现象发生了,`BindingResult.hasErrors()`永远返回false
|
||||
![hasErrors][hasErrors]
|
||||
|
||||
这是什么情况? validator 未指定?我赶紧检查配置:
|
||||
![notNull][notNull]
|
||||
|
||||
![driven][driven]
|
||||
配置没有问题,日志能够正常打印,且没有错误,排除类加载失败的可能。
|
||||
|
||||
上google搜索一下!
|
||||
![google][google]
|
||||
翻看了第一页的回复,大多来自stackoverflow,无非是让你引入包, 加配置, 我项目里配置符合这些回复的要求, 所以需要另想办法
|
||||
|
||||
自己动手吧!我加入如下代码,以验证validator是否被正确加载
|
||||
![initBinder][initBinder]
|
||||
validator果然为null, 且如果拿到validator对象并set进去,就可以解决`BindingResult.hasErrors()`永远返回false的问题,
|
||||
然而,这种处理方式需要在每个Controller中写一遍initBinder, 这种方式并不完美。
|
||||
|
||||
是什么原因造成validator丢失呢?
|
||||
我们知道`annotation-driven`会在spring中自动注册多个bean, 详情请移步[自动注册][自动注册]
|
||||
会不会是项目中存在某些配置覆盖了其中的bean,造成了validator丢失?
|
||||
仔细扫描一下配置文件, 发现果然如此, 项目中为了更换json转换器, 自定义了一个bean
|
||||
![adapter][adapter]
|
||||
|
||||
到了这个地步基本上找到原因了,解决方式很简单,将validator绑定起来就可以了
|
||||
![validator-config][validator-config]
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
[validator]:http://jinnianshilongnian.iteye.com/blog/1733708
|
||||
[自动注册]:https://my.oschina.net/HeliosFly/blog/205343
|
||||
[hasErrors]:{{"/mvc-validator/hasErrors.jpg" | prepend: site.imgrepo }}
|
||||
[validator-config]:{{"/mvc-validator/validator-config.jpg" | prepend: site.imgrepo }}
|
||||
[google]:{{"/mvc-validator/google.jpg" | prepend: site.imgrepo }}
|
||||
[initBinder]:{{"/mvc-validator/initBinder.jpg" | prepend: site.imgrepo }}
|
||||
[adapter]:{{"/mvc-validator/adapter.jpg" | prepend: site.imgrepo }}
|
||||
[driven]:{{"/mvc-validator/driven.jpg" | prepend: site.imgrepo }}
|
||||
[notNull]:{{"/mvc-validator/notNull.jpg" | prepend: site.imgrepo }}
|
||||
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user