随笔-67  评论-522  文章-0  trackbacks-0
    服务器端的数据验证,对于一个WEB应用来说是非常重要的,而Spring3.0开始支持JSR-303规范,它定义了一些标准的验证约束,同时也提供了一个可扩展的自定义方式来满足不同的开发需要,大象以SSM3为基础,结合实例来说明如何通过Spring MVC用自定义约束注解的方式来实现Validator验证。
    在实现功能之前,我们需要在pom文件里添加一些必须的依赖:
    
    validation-apiJSR-303规范的标准接口,hibernate-validator则是这套接口的一个实现,而hibernate-validator的实现里面又会用到slf4j,所以还需要加上这两个jar包。有了这些,我们就可以在此基础上实现自定义注解约束扩展了。
    本篇还是以SSM3为基础,以对角色名称添加屏蔽词为例来说明如何实现这些功能。
    首先需要定义这样一个屏蔽词注解:
    
    上面这个注解类,message(),groups()payload()这三个方法是注解验证的标准格式,filed()表示验证的字段名称,{constraint.default.words.message}是从ValidationMessages.properties资源文件中获取的,这个文件的位置就在resources目录下面。
    现在定义了验证接口,就需要有处理接口的实现,WordsValidator.class就是用来处理这个的:
    
    这里大象为了说明实现的方法,简化了处理,实际开发中,可以改进一下,通过使用屏蔽词库对value值进行过滤。下面是一个测试类,对此注解进行一个简单的测试。
    
    现在定义好了注解,我们就可以使用它了。
    
    RoleControllersave方法需要加入验证以及错误处理:
    
    页面上想要显示验证的错误信息,最方便的就是直接使用spring-webmvc里的org.springframework.web.servlet.view.freemarkerspring.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 菠萝大象 阅读(17392) 评论(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 | 认真
非常感谢,贡献源码非常有用, 再次感谢!  回复  更多评论
  

只有注册用户登录后才能发表评论。


网站导航: