Spring4下validation数据校验无效(maven)的解决
SpringMVC4使用数据校验的时候需要使用hibernate-validator的包
第一步添加依赖
<dependency> <groupId>javax.validation</groupId> <artifactId>validation-api</artifactId> <version>2.0.0.Final</version> </dependency> <dependency> <groupId>org.hibernate</groupId> <artifactId>hibernate-validator</artifactId> <version>5.4.1.Final</version> </dependency>
第二步添加校验注解
package com.demo.model; /* * spring4 用hibernate中的validation * * */ import org.hibernate.validator.constraints.Email; import org.hibernate.validator.constraints.NotBlank; import javax.validation.constraints.Size; public class User { private String username; private String password; private String nickname; private String email; public User(){ } public User(String username, String password, String nickname, String email) { this.username = username; this.password = password; this.nickname = nickname; this.email = email; } @NotBlank(message = "用户名不能为空") public String getUsername() { return username; } public void setUsername(String username) { this.username = username; } @Size(min = 6,max = 20,message = "密码为6-20位") public String getPassword() { return password; } public void setPassword(String password) { this.password = password; } public String getNickname() { return nickname; } public void setNickname(String nickname) { this.nickname = nickname; } @Email(message = "请输入合法的邮箱") public String getEmail() { return email; } public void setEmail(String email) { this.email = email; } }
第三步在控制器中对指定参数进行校验注解
注:BindingResult 必须紧跟在@Validate
//@Validated指定验证对象 BindingResult紧跟Validated @RequestMapping(value="/add",method = RequestMethod.POST) public String add(@Validated User user, BindingResult br){ System.out.println(br); System.out.println(br.getErrorCount()); if(br.hasErrors()) return "user/add"; users.put(user.getUsername(),user); return "redirect:/user/users"; }
注:这个配置也会影响到校验是否生效
<mvc:annotation-driven/>
SpringBoot-----数据验证validation(实战中,不推荐使用)
1、定义错误信息
在resources/下创建名称为ValidationMessages.properties
member.mid.notnull.error=用户名不允许为空 member.mid.email.error=用户名的注册必须输入正确的邮箱 member.mid.length.error=用户名的格式错误
2、给Vo类添加注解
package com.zemel.micorboot.vo; import java.io.Serializable; import java.util.Date; import javax.validation.constraints.Email; import javax.validation.constraints.NotNull; import org.hibernate.validator.constraints.Length; public class Member implements Serializable{ /** * */ private static final long serialVersionUID = 1L; @NotNull(message="{member.mid.notnull.error}") @Email(message="{member.mid.email.error}") @Length(min=6,message="{member.mid.length.error}") private String mid; private Integer age; private Double salary; private Date birthday; public String getMid() { return mid; } public void setMid(String mid) { this.mid = mid; } public Integer getAge() { return age; } public void setAge(Integer age) { this.age = age; } public Double getSalary() { return salary; } public void setSalary(Double salary) { this.salary = salary; } public Date getBirthday() { return birthday; } public void setBirthday(Date birthday) { this.birthday = birthday; } }
3、控制添加验证
@Valid Member vo, BindingResult result package com.zemel.micorboot.controller; import java.util.List; import javax.validation.Valid; import org.springframework.stereotype.Controller; import org.springframework.validation.BindingResult; import org.springframework.validation.ObjectError; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.ResponseBody; import com.zemel.micorboot.base.AbstractBaseController; import com.zemel.micorboot.vo.Member; @Controller public class MemberController extends AbstractBaseController { @GetMapping("/addPre") public String addPre(){ return "message/member_add"; } @GetMapping("/add") @ResponseBody public Object add(@Valid Member vo, BindingResult result){ System.out.println("【ADD方法】"+result.hasErrors()); if(result.hasErrors()){ List<ObjectError> list = result.getAllErrors(); list.forEach(oe -> { }); return result.getAllErrors(); } return vo; } }
4、访问结果
[{"codes":["Email.member.mid","Email.mid","Email.java.lang.String","Email"],"arguments":[{"codes":["member.mid","mid"],"arguments":null,"defaultMessage":"mid","code":"mid"},[],{"defaultMessage":".*","arguments":null,"codes":[".*"]}],"defaultMessage":"ç¨æ·åç注åå¿é¡»è¾å¥æ£ç¡®çé®ç®±","objectName":"member","field":"mid","rejectedValue":"xx","bindingFailure":false,"code":"Email"}]
以上为个人经验,希望能给大家一个参考,也希望大家多多支持猪先飞。
相关文章
- 这篇文章主要给大家介绍了关于Nest.js参数校验和自定义返回数据格式的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2021-03-28
校验非空的注解@NotNull如何取得自定义的message
这篇文章主要介绍了校验非空的注解@NotNull如何取得自定义的message,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教...2021-09-29详解element-ui 表单校验 Rules 配置 常用黑科技
这篇文章主要介绍了element-ui 表单校验 Rules 配置 常用黑科技,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下...2020-07-11- 这篇文章主要介绍了解决antd Form 表单校验方法无响应的问题,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2020-10-28
- vue验证滑块功能,在生活中很多地方都可以见到,使用起来非常方便,这篇文章主要给大家介绍了关于vue实现滑块拖拽校验功能的相关资料,需要的朋友可以参考下...2021-08-04
- 这篇文章主要为大家详细介绍了jquery表单验证插件validation使用方法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下...2017-01-23
- 这篇文章主要为大家介绍了javascript实现异步校验的方法,感兴趣的小伙伴们可以参考一下...2016-01-24
- 这篇文章主要介绍了Java 自动安装校验TLS/SSL证书的示例,帮助大家更好的理解和使用Java,感兴趣的朋友可以了解下...2020-10-21
Bootstrap 表单验证formValidation 实现表单动态验证功能
这篇文章主要介绍了Bootstrap 表单验证formValidation 实现表单动态验证功能,需要的朋友可以参考下...2017-05-22- jQuery Validate 插件为表单提供了强大的验证功能,让客户端表单验证变得更简单,同时提供了大量的定制选项,满足应用程序各种需求。本文主要对表单验证插件-Validation进行案例分析,详细介绍,具有很好的参考价值,需要的朋友一起来看下吧...2016-12-31
- 这篇文章主要介绍了如何使用Bean Validation 解决业务中参数校验操作,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教...2021-07-28
- 这篇文章主要介绍了c# 数据标注与数据校验的相关资料,帮助大家更好的理解和学习c#,感兴趣的朋友可以了解下...2020-10-09
- 这篇文章主要介绍了使用自定义注解进行restful请求参数的校验方式,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教...2021-10-19
- 本篇文章是对使用C语言实现CRC校验的方法进行了详细的分析介绍,需要的朋友参考下...2020-04-25
- 这篇文章主要介绍了C#计算文件MD5校验的方法,涉及C#针对文件进行md5校验的技巧,非常具有实用价值,需要的朋友可以参考下...2020-06-25
Spring4下validation数据校验无效(maven)的解决
这篇文章主要介绍了Spring4下validation数据校验无效(maven)的解决,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教...2021-06-10- 这篇文章主要介绍了MVC文件上传支持批量上传拖拽及预览文件内容校验功能,需要的朋友可以参考下...2021-09-22
- 这篇文章主要给大家介绍了关于SpringBoot参数校验与国际化使用教程的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2020-11-24
- 本文介绍了.NET验证组件Fluent Validation,并通过实例告诉我们这个验证组件的使用方法,以及与asp.net mvc验证库的整合方案,这里推荐给有相同需求的小伙伴...2021-09-22
嵌入式项目使用C语言结构体位段特性实现断言宏校验数据范围有效性的方法
今天小编就为大家分享一篇关于嵌入式项目使用C语言结构体位段特性实现断言宏校验数据范围有效性的方法,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧...2020-04-25