菠萝大象
用心思考,用心写作
首页
新随笔
联系
管理
随笔-67 评论-522 文章-0 trackbacks-0
基于Spring MVC框架JSR-303的自定义注解Validator验证实现
服务器端的数据验证,对于一个
WEB
应用来说是非常重要的,而
Spring
从
3.0
开始支持
JSR-303
规范,
它定义了一些标准的验证约束,同时也提供了一个可扩展的自定义方式来满足不同的开发需要,大象以
SSM3
为基础,结合实例来说明如何通过
Spring MVC
用自定义约束注解的方式来实现
Validator
验证。
在实现功能之前,我们需要在
pom
文件里添加一些必须的依赖:
validation-api
是
JSR-303
规范的标准接口,
hibernate-validator
则是这套接口的一个实现,而
hibernate-validator
的实现里面又会用到
slf4j
,所以还需要加上这两个
jar
包。有了这些,我们就可以在此基础上实现自定义注解约束扩展了。
本篇还是以
SSM3
为基础,以对角色名称添加屏蔽词为例来说明如何实现这些功能。
首先需要定义这样一个屏蔽词注解:
上面这个注解类,
message(),groups()
和
payload()
这三个方法是注解验证的标准格式,
filed()
表示验证的字段名称,
{constraint.default.words.message}
是从
ValidationMessages.properties
资源文件中获取的,这个文件的位置就在
resources
目录下面。
现在定义了验证接口,就需要有处理接口的实现,
WordsValidator.
class
就是用来处理这个的:
这里大象为了说明实现的方法,简化了处理,实际开发中,可以改进一下,通过使用屏蔽词库对
value
值进行过滤。下面是一个测试类,对此注解进行一个简单的测试。
现在定义好了注解,我们就可以使用它了。
RoleController
的
save
方法需要加入验证以及错误处理:
页面上想要显示验证的错误信息,最方便的就是直接使用
spring-webmvc
里的
org.springframework.web.servlet.view.freemarker
下
的
spring.ftl
文件,它里面定义了很多的宏命令,同时还可以添加自定义的宏命令:
role_edit.html
这个页面的变动不大,主要就是四点,具体的可以查看源码。
1
、引入并定义
<
#import "/common/spring.ftl" as spring/>
2
、在角色名
input
后面增加
<
label
class
=
"error"
for
=
"name"
style
="
display
:
none
;"
></
label
>
3
、然后加入
jquery.js
,用来解析
showErrors
中的脚本
4
、使用
<
@spring.showErrors/>
最后,要想让这些功能都能正常的运行起来,需要改下
servlet-context.xml
文件
源码下载:
ssm3_annotation
本文为菠萝大象原创,如要转载请注明出处。
http://www.blogjava.net/
bolo
posted on 2013-12-16 17:47
菠萝大象
阅读(17408)
评论(10)
编辑
收藏
所属分类:
Spring3
评论:
#
re: 基于Spring MVC框架JSR-303的自定义注解validator验证实现 2013-12-17 15:56 |
china obd2
很好很强大
回复
更多评论
#
re: 基于Spring MVC框架JSR-303的自定义注解validator验证实现 2013-12-17 17:43 |
CoderDream
感谢分享!
SQL脚本有问题,user表少了一个password字段!
回复
更多评论
#
re: 基于Spring MVC框架JSR-303的自定义注解validator验证实现 2013-12-17 18:01 |
菠萝大象
@CoderDream
多谢兄台指正,这个字段是多余的,我也不知道为什么就在里面,已经更新了下载包。
回复
更多评论
#
re: 基于Spring MVC框架JSR-303的自定义注解validator验证实现 2013-12-18 11:35 |
鲤伴
专家 人才
回复
更多评论
#
re: 基于Spring MVC框架JSR-303的自定义注解Validator验证实现 2014-03-28 18:30 |
最代码
我根据你的博客整理了一份代码,下载地址:
http://www.zuidaima.com/share/1755786415246336.htm
回复
更多评论
#
re: 基于Spring MVC框架JSR-303的自定义注解Validator验证实现 2014-03-29 12:32 |
菠萝大象
@最代码
谢谢分享
回复
更多评论
#
re: 基于Spring MVC框架JSR-303的自定义注解Validator验证实现 2014-03-30 23:47 |
最代码
@菠萝大象
客气
回复
更多评论
#
re: 基于Spring MVC框架JSR-303的自定义注解Validator验证实现 2014-04-08 16:31 |
王凯文
constraint.default.words.message={filed}\u6709\u5c4f\u853d\u8bcd
请问这是一种什么格式编码阿?
回复
更多评论
#
re: 基于Spring MVC框架JSR-303的自定义注解Validator验证实现 2014-04-14 19:42 |
菠萝大象
@王凯文
你需要装个propedit插件
回复
更多评论
#
re: 基于Spring MVC框架JSR-303的自定义注解Validator验证实现
2015-11-03 11:57 |
认真
非常感谢,贡献源码非常有用, 再次感谢!
回复
更多评论
新用户注册
刷新评论列表
只有注册用户
登录
后才能发表评论。
网站导航:
博客园
IT新闻
Chat2DB
C++博客
博问
管理
相关文章:
Quartz Spring与Spring Task总结
基于SSM3框架使用FreeMarker模板生成静态页的实现
基于Spring MVC框架JSR-303的自定义注解Validator验证实现
基于Spring MVC框架的异常隐藏实现方法
解决Spring MVC框架静态资源文件显示问题
基于SSM3框架FreeMarker自定义指令(标签)实现
Spring MVC 3.0.5+Spring 3.0.5+MyBatis3.0.4全注解实例详解(五)
Spring MVC 3.0.5+Spring 3.0.5+MyBatis3.0.4全注解实例详解(四)
Spring MVC 3.0.5+Spring 3.0.5+MyBatis3.0.4全注解实例详解(三)
Spring MVC 3.0.5+Spring 3.0.5+MyBatis3.0.4全注解实例详解(二)
<
2013年12月
>
日
一
二
三
四
五
六
24
25
26
27
28
29
30
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
1
2
3
4
随笔分类
(67)
Concurrency(3)
Database(4)
dom4j&jdom(3)
Eclipse(3)
Flex(4)
Hibernate(2)
Java(11)
jBPM(1)
jQuery(5)
Linux(1)
mybatis-generator(3)
Spring3(11)
Struts2(9)
随笔(7)
随笔档案
(67)
2015年9月 (1)
2015年8月 (1)
2015年7月 (1)
2015年5月 (1)
2015年4月 (1)
2015年3月 (3)
2015年2月 (1)
2015年1月 (2)
2014年8月 (1)
2014年6月 (2)
2014年5月 (2)
2014年4月 (3)
2014年3月 (1)
2014年2月 (1)
2014年1月 (2)
2013年12月 (3)
2013年11月 (2)
2013年10月 (2)
2013年9月 (2)
2012年5月 (1)
2012年4月 (2)
2011年8月 (1)
2011年6月 (1)
2011年5月 (3)
2010年9月 (1)
2010年8月 (1)
2010年7月 (1)
2010年6月 (1)
2010年5月 (2)
2010年4月 (4)
2010年3月 (2)
2010年2月 (7)
2008年9月 (2)
2008年8月 (6)
搜索
积分与排名
积分 - 779492
排名 - 54
最新随笔
1. 由Struts2Action代理和googlecode-jsonplugin产生的一个IllegalArgumentException异常问题
2. 在CentOS系统中同步时间
3. 全局唯一ID生成器浅析
4. 用Java实现MJD转UTC
5. 修改mybatis-generator-1.3.2源码实现自定义代码生成详解(三)
6. 修改mybatis-generator-1.3.2源码实现自定义代码生成详解(二)
7. 修改mybatis-generator-1.3.2源码实现自定义代码生成详解(一)
8. Quartz Spring与Spring Task总结
9. 常用的MySQL复杂查询语句写法
10. 常用的MySQL语句写法
11. 浅谈Java两种并发类型——计算密集型与IO密集型
12. 使用XStream注解实现Java对象与XML互相转换的代码示例
13. 浅谈volatile变量的理解
14. 浅谈Java共享变量
15. m2eclipse安装小贴士
最新评论
1. re: 修改mybatis-generator-1.3.2源码实现自定义代码生成详解(一)
评论内容较长,点击标题查看
--半湖思絮
2. re: 修改mybatis-generator-1.3.2源码实现自定义代码生成详解(一)
评论内容较长,点击标题查看
--菠萝大象
3. re: 修改mybatis-generator-1.3.2源码实现自定义代码生成详解(一)
评论内容较长,点击标题查看
--donghc
4. re: 修改mybatis-generator-1.3.2源码实现自定义代码生成详解(一)
@donghc
maven不是这样玩的呀,我的run是打包后用的,你仔细看了第三篇的内容么?在IDE里直接启动StartUp就行了,这个类是用来测试的
--菠萝大象
5. re: 修改mybatis-generator-1.3.2源码实现自定义代码生成详解(一)
评论内容较长,点击标题查看
--donghc
阅读排行榜
1. 使用jackson对Java对象与JSON字符串相互转换的一些总结(59321)
2. 在Eclipse中反编译Class文件完全详解(43550)
3. Quartz Spring与Spring Task总结(38539)
4. 使用XStream注解实现Java对象与XML互相转换的代码示例(33109)
5. Spring MVC 3.0.5+Spring 3.0.5+MyBatis3.0.4全注解实例详解(二)(32438)
评论排行榜
1. Struts2.1.6+Spring2.5.6+Hibernate3.3.1全注解实例详解(五)(69)
2. Struts2.1.6+Spring2.5.6+Hibernate3.3.1全注解实例详解(三)(47)
3. Struts2.1.6+Spring2.5.6+Hibernate3.3.1全注解实例详解(一)(35)
4. Struts2.1.6+Spring2.5.6+Hibernate3.3.1全注解实例详解(二)(27)
5. Spring MVC 3.0.5+Spring 3.0.5+MyBatis3.0.4全注解实例详解(三)(26)