如何解决Spring in action @valid验证不生效的问题
在Spring中使用@Valid注解可以轻松实现参数校验,但是有时候我们会遇到@Valid校验不生效的问题,接下来我将分享如何解决这个问题的完整攻略。
1. 确认是否添加了校验器依赖
在使用@Valid注解校验参数之前,需要确保我们在项目中添加了校验器依赖。常用的校验器依赖是Hibernate Validator。如果未添加该依赖,可以在pom.xml中添加以下内容:
<dependency>
<groupId>org.hibernate.validator</groupId>
<artifactId>hibernate-validator</artifactId>
<version>6.0.16.Final</version>
</dependency>
2. 确认是否开启了校验器
在Spring中使用@Valid注解校验参数需要在配置文件中开启校验器,例如在application.properties中添加以下配置:
spring.mvc.throw-exception-if-no-handler-found=true
spring.mvc.static-path-pattern=/static/**
spring.mvc.view.prefix=/WEB-INF/views/
spring.mvc.view.suffix=.jsp
# 开启校验器
spring.mvc.validation.enabled=true
3. 确认是否正确使用了@Valid注解
一般情况下,我们使用@Valid注解校验参数时,会把校验结果放在BindingResult中。正确使用@Valid注解的示例如下:
@PostMapping("/login")
public String login(@Valid User user, BindingResult result) {
if (result.hasErrors()) {
return "login";
} else {
return "redirect:/home";
}
}
4. 确认是否添加了@RequestBody注解
如果我们在使用@Valid注解校验参数时,使用了@RequestBody注解,那么我们还需要使用@Validated注解。示例代码如下:
@PostMapping("/save")
public ResponseEntity<User> saveUser(@Validated @RequestBody User user, BindingResult result) {
if (result.hasErrors()) {
return new ResponseEntity<>(HttpStatus.BAD_REQUEST);
}
userService.save(user);
return new ResponseEntity<>(user, HttpStatus.CREATED);
}
总结
以上就是解决Spring in action @Valid验证不生效的完整攻略。需要注意的是,在应用@Valid注解进行参数校验时,除了需要以上几点,还需注意如何正确地配置和使用校验器。
希望我的分享能够帮到你。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:如何解决Spring in action @valid验证不生效的问题 - Python技术站