SpringMVC学习(四)--前端验证Validation

来源:互联网 发布:bbs.h5dm新域名 编辑:程序博客网 时间:2024/06/04 18:23

SpringMVC学习(四)–前端验证Validation

标签(空格分隔): SpringMVC


在b/s模式中,经常会对前端的输入进行合法性验证,在用户体验的基础上,经常会将这些验证放在前端中实现,但是为了安全性,也会在后端添加对应的规则验证。SpringMVC默认支持Hibernate Validator的实现。

具体实现如下
1、加入jar包

*hibernate-validator-4.3.0.Final.jar
jboss-loging-3.1.0.CR2.jar
validation-api-1.0.0.GA.jar*

2、配置validator

<!-- 校验器 --><bean id="validator"        class="org.springframework.validation.beanvalidation.LocalValidatorFactoryBean">        <!-- 校验器-->        <property name="providerClass" value="org.hibernate.validator.HibernateValidator" />        <!-- 指定校验使用的资源文件,如果不指定则默认使用classpath下的ValidationMessages.properties -->        <property name="validationMessageSource" ref="messageSource" />    </bean><!-- 校验错误信息配置文件 -->    <bean id="messageSource"        class="org.springframework.context.support.ReloadableResourceBundleMessageSource">        <!-- 资源文件名-->        <property name="basenames">            <list>                <value>classpath:CustomValidationMessages</value>          </list>           </property>        <!-- 资源文件编码格式 -->        <property name="fileEncodings" value="utf-8" />        <!-- 对资源文件内容缓存时间,单位秒 -->        <property name="cacheSeconds" value="120" />    </bean>

3.将validator加入处理器适配器中

<mvc:annotation-driven validator="validator"> </mvc:annotation-driven>

4.在Bean中添加校验规则

public class Items {    private Integer id;    @Size(min=1,max=30,message="{item.name.length.error}")    private String name;    @NotEmpty(message="{pic.is.null}")    private String pic;

5.配置错误消息文件CustomValidationMessages

item.name.length.error=商品名称在130个字符之间pic.is.null=请上传图片

6.捕获错误

// 商品修改提交    @RequestMapping("/editItemSubmit")    public String editItemSubmit(@Validated @ModelAttribute("item") Items items,BindingResult result,            @RequestParam("pictureFile") MultipartFile[] pictureFile,Model model)            throws Exception {    //如果存在校验错误则转到商品修改页面        if (result.hasErrors()) {            List<ObjectError> errors = result.getAllErrors();            for(ObjectError objectError:errors){                System.out.println(objectError.getCode());                System.out.println(objectError.getDefaultMessage());            }            return "item/editItem";        }

分组校验

如果在不同的处理器中,对同一个bean的校验规则不一致的话,肯定不能用同一套校验规则,那就将校验规则按组划分。定义两个空接口实现,用来作为分组标识
1.新建接口

public interface ValidGroup1 {}public interface ValidGroup2 {}

2.在Bean中对规则进行分组校验

public class Items {    private Integer id;//这里指定分组ValidGroup1,此@Size校验只适用ValidGroup1校验    @Size(min=1,max=30,message="{item.name.length.error}",groups={ValidGroup1.class})    private String name;

3.修改处理器

// 商品修改提交    @RequestMapping("/editItemSubmit")    public String editItemSubmit(@Validated(value={ValidGroup1.class}) @ModelAttribute("item") Items items,BindingResult result,            @RequestParam("pictureFile") MultipartFile[] pictureFile,Model model)            throws Exception {

校验注解

@Null 被注释的元素必须为 null
@NotNull 被注释的元素必须不为 null
@AssertTrue 被注释的元素必须为 true
@AssertFalse 被注释的元素必须为 false
@Min(value) 被注释的元素必须是一个数字,其值必须大于等于指定的最小值
@Max(value) 被注释的元素必须是一个数字,其值必须小于等于指定的最大值
@DecimalMin(value) 被注释的元素必须是一个数字,其值必须大于等于指定的最小值
@DecimalMax(value) 被注释的元素必须是一个数字,其值必须小于等于指定的最大值
@Size(max=, min=) 被注释的元素的大小必须在指定的范围内
@Digits (integer, fraction) 被注释的元素必须是一个数字,其值必须在可接受的范围内
@Past 被注释的元素必须是一个过去的日期
@Future 被注释的元素必须是一个将来的日期
@Pattern(regex=,flag=) 被注释的元素必须符合指定的正则表达式
Hibernate Validator 附加的 constraint
@NotBlank(message =) 验证字符串非null,且长度必须大于0
@Email 被注释的元素必须是电子邮箱地址
@Length(min=,max=) 被注释的字符串的大小必须在指定的范围内
@NotEmpty 被注释的字符串的必须非空
@Range(min=,max=,message=) 被注释的元素必须在合适的范围内

阅读全文
'); })();
0 0
原创粉丝点击
热门IT博客
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 中长头发发型 女中长发型图片 好看的中长发发型图片 女生中长发型图片 女士中长羽绒服 女士中长棉服 男生中长发型 少女中长发型 中长烫发发型 中长呢子大衣 半身中长伞裙 后中长是什么意思 女生发型图片中长发 碎发发型图片女中长发 头型女长发设计图片 女生中长发发型图片 女长发发型图片 发型女长发 长发发型扎法 女士发型中长发 发型中长发 中长发造型图片 女生中长发 长发图片发型 中长发编发 发型图片女中长发扎法 中长发扎发 中长发烫发发型图片 女人长发发型 中长发女生发型 长发女生图片 长发女生 长发图片 100中长发发型扎法 今年流行什么发型女图片长发 长发适合什么发型 头发发型图片 卷发图片中长发 明星发型图片女中长发 女生长发发型 女士长发发型图片