在Spring Boot中使用Validation进行表单验证
在Spring Boot中使用Validation进行表单验证,你可以利用Hibernate Validator,它是Bean Validation的一个实现。以下是一个简单的例子:
- 添加依赖到你的
pom.xml
:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-validation</artifactId>
</dependency>
- 创建一个实体类并添加验证注解:
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.Size;
public class UserForm {
@NotBlank(message = "用户名不能为空")
@Size(min = 3, max = 20, message = "用户名长度必须在3到20个字符之间")
private String username;
@NotBlank(message = "密码不能为空")
@Size(min = 6, max = 20, message = "密码长度必须在6到20个字符之间")
private String password;
// 省略getter和setter方法
}
- 在Controller中使用
@Valid
注解进行验证:
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RestController;
@RestController
public class UserController {
@PostMapping("/register")
public String registerUser(@Validated @RequestBody UserForm userForm) {
// 验证通过后的逻辑
return "注册成功";
}
}
- 处理验证错误:
如果表单验证失败,你可以通过BindingResult
来获取错误信息:
@PostMapping("/register")
public String registerUser(@Validated @RequestBody UserForm userForm, BindingResult bindingResult) {
if (bindingResult.hasErrors()) {
// 处理错误信息
bindingResult.getAllErrors().forEach(error -> System.out.println(error.getDefaultMessage()));
return "注册失败";
}
return "注册成功";
}
或者,你可以使用@ControllerAdvice
和@ExceptionHandler
来全局处理验证错误:
import org.springframework.http.HttpStatus;
import org.springframework.web.bind.MethodArgumentNotValidException;
import org.springframework.web.bind.annotation.ControllerAdvice;
import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.bind.annotation.ResponseStatus;
@ControllerAdvice
public class GlobalExceptionHandler {
@ResponseStatus(HttpStatus.BAD_REQUEST)
@ExceptionHandler(MethodArgumentNotValidException.c
评论已关闭