我正在使用Spring Boot进行其余的Web服务,我想知道是否有可能通过在控制器层中将POJO作为参数的方法对bean验证注释进行不同的验证。
示例:
POJO:
Public class Person{
@NotNull(forMethod="methodOne")
private String firstName;
@NotNull(forMehotd="methodTwo")
private String lastName;
private String age;
//getter and setter
}
控制器
@RestController
public class controller{
@RequestMapping(....)
public ResponseEntity methodOne(@Valid @RequestBody Person person){
.....
}
@RequestMapping(....)
public ResponseEntity methodTwo(@Valid @RequestBody Person person){
......
}
}
我知道可以在方法中使用单独的参数来实现,但是我有一个具有如此多属性的POJO。有可能这样做吗?
我认为您应该在bean验证注释中使用validation groups
,并使用@Validated
注释而不是@Valid
注释。因为@Validated
批注具有value
属性,该属性指定要验证的组。
例如:
Public class Person{
@NotNull(groups={MethodOne.class})
private String firstName;
@NotNull(groups={MethodTwo.class})
private String lastName;
private String age;
//getter and setter
}
和
@RestController
public class controller{
@RequestMapping(....)
public ResponseEntity methodOne(@Validated(MethodOne.class) @RequestBody Person person){
.....
}
@RequestMapping(....)
public ResponseEntity methodTwo(@Validated(MethodTwo.class) @RequestBody Person person){
......
}
}
顺便说一句,不要忘记您应该创建MethodOne
和MethodTwo
接口以将它们用作验证组。