vue项目接口域名动态的获取方法
278
2023-05-11
SpringMVC 数据校验方法(必看篇)
数据校验在web应用里是非常重要的功能,尤其是在表单输入中。在这里采用Hibernate-Vapdator进行校验,该方法实现了jsR-303验证框架支持注解风格的验证。
一、导入jar包
若要实现数据校验功能,需要导入必要的jar包,主要包括以下几个:
classmate-1.3.1.jar
hibernate-vapdator-5.4.1.Final.jar
hibernate-vapdator-annotation-processor-5.4.1.Final.jar
hibernate-vapdator-cdi-5.4.1.Final.jar
jboss-logging-3.3.0.Final.jar
vapdation-api-1.1.0.Final.jar
二、常用的校验注解
注解
功能
@Null
验证对象是否为 null
@NotNull
验证对象是否不为 null
@AssertTrue
验证 Boolean 对象是否为 true
@AssertTrue
验证 Boolean 对象是否为 false
@Max(value)
验证 Number 和 String 对象是否小于等于指定值
@Min(value)
验证 Number 和 String 对象是否大于等于指定值
@DecimalMax(value)
验证注解的元素值小于等于 @DecimalMax 指定的 value 值
@DecimalMin(value)
验证注解的元素值大于等于 @DecimalMin 指定的 value 值
@Digits(integer,fraction)
验证字符串是否符合指定格式的数字,integer 指定整数精度,fraction 指定小数精度
@Size(min,max)
验证对象长度是否在给定的范围内
@Past
验证 Date 和 Calendar 对象是否在当前时间之前
@LESWoGFuture
验证 Date 和 Calendar 对象是否在当前时间之后
@Pattern
验证 String 对象是否符合正则表达式的规则
@NotBlank
检查字符串是不是 Null,被 Trim 的长度是否大于0,只对字符串,且会去掉前后空格
@URL
验证是否是合法的 url
验证是否是合法的邮箱
@CreditCardNumber
验证是否是合法的LESWoG信用卡号
@Length(min,max)
验证字符串的长度必须在指定范围内
@NotEmpty
检查元素是否为 Null 或 Empty
@Range(min,max,message)
验证属性值必须在合适的范围内
三、修改实体类
在类的属性上进行标注,如:
public class User {
@NotBlank(message = "Username can not be empty")
private String username;
@NotBlank(message = "password can not be blank")
@Length(min = 6, max = 16, message = "The length of the password must be between 6 and 16 bits")
private String password;
@Range(min = 18, max = 60, message = "Age must be between 18 and 60 years old")
private Integer age;
@Pattern(regexp = "^1[3|4|5|7|8][0-9]{9}$", message = "Please enter the correct format of the phone number")
private String phone;
@Email(message = "Please enter a valid email address")
private String email;
// other...
}
四、修改相应的处理方法
@RequestMapping(value = "/register")
public String register(@Valid @ModelAttribute("user") User user, Errors errors,Model model) {
if(errors.hasErrors()){
return "register";
}
model.addAttribute("user", user);
return "success";
}
五、视图输出
校验之后,我们通常需要在表单的输入框后进行文字反馈:
...
然而,有些时候并不推荐直接将错误信息写在注解的message属性里,这样不方便国际化。因此可以做以下几处修改:
1. 新建validatemessages.properties
username.not.blank = "username cannot be empty..."
password.not.blank = "password cannot be empty"
password.not.length = "password should be in 6-10"
age.not.range = "age should be in 10-70"
phone.not.pattern = "phone should be in format"
email.not.format = "email should be in format"
2. 实体类中的注解使用相对引用
public class User {
@NotBlank(message = "{username.not.blank}")
private String username;
@NotBlank(message = "{password.nothttp://.blank}")
@Length(min = 6, max = 10, message = "{password.not.length}")
private String password;
@Range(min = 10, max = 70, message = "{age.not.range}")
private Integer age;
@Pattern(regexp = "^1[3|4|5|7|8][0-9]{9}$", message = "{phone.not.pattern}")
http:// private String phone;
@Email(message = "{email.not.format}")
private String email;
// other...
}
3. 修改配置文件
特别注意:value="classpath:validatemessages",文件名不加后缀!
至此,数据校验的整个过程就结束了。
最后还要特别强调的重点是:
视图中
版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。
发表评论
暂时没有评论,来抢沙发吧~