@Size怎么搭配@Valid或者@Validated使用?我老是不生效
时间: 2023-07-25 17:23:55 浏览: 141
@Size注解是用来限制字符串、数组、集合等类型的长度范围的,而@Valid和@Validated注解是用来触发嵌套校验的。如果你使用@Valid或者@Validated注解触发嵌套校验时不生效,可能是以下原因:
1. 你没有在类上添加@Validated注解。如果你使用@Validated注解触发嵌套校验时,你需要在类上添加这个注解,例如:
```
@RestController
@RequestMapping("/users")
@Validated
public class UserController {
...
}
```
2. 你没有在方法参数上添加@Valid或@Validated注解。例如:
```
@GetMapping("/{id}")
public User getUserById(@PathVariable("id") @NotNull @Min(1) Long id, @Valid @RequestBody User user) {
return userService.getUserById(id);
}
```
在这个例子中,@RequestBody注解表示这是一个请求体参数,@Valid注解表示需要对user对象进行校验。
3. 你没有在实体类的字段上添加@Size注解。例如:
```
public class User {
@NotNull(message = "用户名不能为空")
@Size(min = 1, max = 20, message = "用户名长度必须在1到20之间")
private String username;
...
}
```
在这个例子中,@Size注解表示username字段的长度需要在1到20之间。
希望以上解答能够帮助你解决问题。
阅读全文