问题描述
现在是登录接口我们只需要判断username和password,如果是别的接口也是用User类接收的,但是username和password可以为空怎么办?可以新建一个类不加验证注解,但是会很冗余。
解决方案
在NotNull注解里面配置group,需要验证的时候,就在controller参数注解中加上这个groups名称
public interface AddGroup {
//不需要有内容
}
原本的类
@Data
public class User {
private Integer id;
@NotNull(message = "用户名不能为空")
private String username;
@NotNull(message = "密码不能为空")
private String password;
}
@GetMapping("login")
public Result login(@Valid User user) {
//验证密码操作省略
return Result.suc();
}
修改后的类,类上的注解@Validated
不要忘记
@Data
public class User {
private Integer id;
@NotNull(message = "用户名不能为空",groups = {AddGroup.class})
private String username;
@NotNull(message = "密码不能为空")
private String password;
}
@Slf4j
@Validated
@RequiredArgsConstructor
@RestController
@RequestMapping("/auth")
public class AuthController {
@GetMapping("test")
public Result test(@Validated(value = {AddGroup.class}) User user) {
//验证密码操作省略
return Result.suc();
}
}