下面我将为您详细讲解“springmvc的@Validated注解使用”的完整攻略。
什么是@Validated注解
在Spring MVC中,我们经常需要在控制器方法中对传入的参数进行校验,@Validated注解就是用来实现参数校验的。
如何使用@Validated注解
- 配置Spring MVC支持参数校验
首先需要在Spring MVC的配置文件中开启参数校验功能。在Spring Boot应用中,默认已经开启,只需要在控制器方法参数上添加@Validated注解即可。
在传统的Spring MVC应用中,需要在配置文件中开启参数校验功能:
<!--启用MVC Controller层的注解,例如@Validated -->
<mvc:annotation-driven/>
- 添加@Validated注解在控制器方法参数上
在需要进行参数校验的控制器方法的参数上添加@Validated注解。例如:
@RequestMapping(value = "/user", method = RequestMethod.POST)
@ResponseBody
public JsonResult addUser(@RequestBody @Validated User user) {
//业务逻辑处理
return JsonResult.success();
}
在这个例子中,我们需要对@RequestBody注解的User对象进行校验,因为校验注解只能添加在JavaBean上,所以需要在User类的需要校验的字段上添加相应的校验注解。例如:
@Data
public class User {
@NotNull(message = "姓名不能为空")
private String name;
@Min(value = 18, message = "年龄不能小于18岁")
private int age;
}
在这个例子中,我们添加了@NotNull和@Min注解,用来分别校验name和age字段。
- 处理校验结果
在控制器方法上添加BindingResult参数,用来接收校验结果。 如果校验结果中有错误,则需要将错误信息返回给客户端。
@RequestMapping(value = "/user", method = RequestMethod.POST)
@ResponseBody
public JsonResult addUser(@RequestBody @Validated User user, BindingResult bindingResult) {
if (bindingResult.hasErrors()) {
//将校验错误信息返回给客户端
List<ObjectError> errors = bindingResult.getAllErrors();
StringBuilder builder = new StringBuilder();
for (ObjectError error : errors) {
builder.append(error.getDefaultMessage()).append(";");
}
return JsonResult.error(builder.toString());
}
//业务逻辑处理
return JsonResult.success();
}
在这个例子中,我们添加了BindingResult参数,并且检查是否有校验错误。如果有,则遍历所有的错误信息,并将错误信息以字符串的形式返回给客户端。
-
注意事项
-
校验注解只能添加在JavaBean的属性上。
- 如果一个JavaBean中的多个属性需要进行校验,则可以使用@Valid注解,例如:
@Data
public class User {
@NotNull(message = "姓名不能为空")
private String name;
@Valid // 在嵌套对象中添加@Valid注解
private List<Role> roles;
}
- @Validated注解和@Valid注解的区别,@Validated注解和@Valid注解本质上是一样的,但是@Validated注解可以指定校验分组。例如:
public interface GroupA {
}
@Data
public class User {
@NotNull(message = "姓名不能为空", groups = {GroupA.class})
private String name;
@Min(value = 18, message = "年龄不能小于18岁")
private int age;
}
在这个例子中,我们定义了一个分组GroupA,可以在@NotNull注解中指定分组信息。在进行校验时,只会对指定分组的校验注解进行校验。
综上所述,这就是@Validated注解的完整攻略。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:springmvc的@Validated注解使用 - Python技术站