下面是详细讲解“hibernate-validator如何使用校验框架”的完整攻略。
简介
hibernate-validator是一款基于Java Bean Validation标准的校验框架,能够轻松地将校验逻辑应用到JavaBean中,大大提高开发效率,减少出错几率。
使用步骤
1. 引入依赖
在项目的pom.xml文件中添加如下依赖配置:
<dependency>
<groupId>org.hibernate.validator</groupId>
<artifactId>hibernate-validator</artifactId>
<version>6.0.13.Final</version>
</dependency>
注意:hibernate-validator需要使用JavaBean Validation API进行校验,需要同时引入validation-api
依赖。
2. 在JavaBean中添加校验注解
在JavaBean中添加相关的校验注解,来标记需要校验的属性,如:
public class User {
@NotEmpty(message = "用户名不能为空")
private String username;
@Size(min = 6, max = 16, message = "密码长度必须在6-16位之间")
private String password;
@Email(message = "邮箱格式不正确")
private String email;
// ... 省略其他属性和方法
}
注解说明:
- @NotEmpty
:表示该属性不能为空,message属性为校验失败时的提示信息。
- @Size
:可以用来限制字符串的长度,min属性为最小长度,max属性为最大长度。
- @Email
:表示该属性必须符合邮箱格式。
更多的校验注解可以查阅官方文档。
3. 执行校验
在需要校验的地方,创建一个Validator
实例,并调用validate
方法进行校验,如:
Validator validator = Validation.buildDefaultValidatorFactory().getValidator();
Set<ConstraintViolation<User>> violations = validator.validate(user);
if (!violations.isEmpty()) {
StringBuilder sb = new StringBuilder();
for (ConstraintViolation<User> violation : violations) {
sb.append(violation.getMessage()).append("\n");
}
throw new ValidationException(sb.toString());
}
Validation.buildDefaultValidatorFactory().getValidator()
用于创建一个默认的Validator
实例,validate方法返回一个Set<ConstraintViolation>
集合,其中每个元素表示一个校验失败的结果,可以通过遍历集合将其中的失败信息捕获并返回给用户。
示例1
以Spring MVC为例,使用hibernate-validator
进行表单校验,进行用户名和密码的校验。
- 首先,编写注册表单的JSP页面:
<%@ taglib prefix="form" uri="http://www.springframework.org/tags/form" %>
<html>
<head>
<title>用户注册</title>
</head>
<body>
<h2>用户注册</h2>
<form:form method="POST" modelAttribute="user">
<table>
<tr>
<td>用户名:</td>
<td><form:input path="username"/><form:errors path="username"/></td>
</tr>
<tr>
<td>密码:</td>
<td><form:password path="password"/><form:errors path="password"/></td>
</tr>
<tr>
<td>Email:</td>
<td><form:input path="email"/><form:errors path="email"/></td>
</tr>
<tr>
<td colspan="2"><input type="submit" value="注册"/></td>
</tr>
</table>
</form:form>
</body>
</html>
根据JavaBean的属性名可以设置校验的name属性。
- 然后,在Spring的Controller中编写代码:
@Controller
@RequestMapping("/user")
public class UserController {
@PostMapping("/register")
public String register(@Validated User user, BindingResult result, Model model) {
if (result.hasErrors()) {
model.addAttribute("user", user);
return "register";
} else {
// TODO 处理用户注册操作
return "redirect:/login";
}
}
}
通过@Validated
注解将User对象进行校验,BindingResult
对象保存了校验结果。在校验失败时,将User对象和校验结果传递给页面进行错误提示。
示例2
在JavaBean的嵌套属性的校验。例如,User对象中包含了address对象,address对象中包含了城市和邮编等属性,需要对这些属性进行校验,可以在User对象中添加@Valid
注解。
public class User {
@NotEmpty(message = "用户名不能为空")
private String username;
@Size(min = 6, max = 16, message = "密码长度必须在6-16位之间")
private String password;
@Email(message = "邮箱格式不正确")
private String email;
@Valid
private Address address;
// ... 省略其他属性和方法
}
public class Address {
@NotEmpty(message = "城市不能为空")
private String city;
@NotEmpty(message = "邮编不能为空")
private String zipcode;
// ... 省略其他属性和方法
}
通过在User对象的address属性上添加@Valid
注解,表示需要对其中的属性进行校验。然后在Controller中执行校验即可。
结论
以上就是使用hibernate-validator进行校验的完整攻略。通过添加注解的方法,在JavaBean中描绘关于校验的信息,并且通过调用validate接口进行校验的方法,可以很好的完成校验的任务。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:hibernate-validator如何使用校验框架 - Python技术站