基于SpringMVC框架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.ssage}是从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" ></label>
3、然后加⼊jquery.js,⽤来解析showErrors中的脚本
4、使⽤<@spring.showErrors/>
最后,要想让这些功能都能正常的运⾏起来,需要改下l⽂件
validation框架
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论