Spring boot 和 Bean validation 的不同方法和相同的方法 class
Spring boot and Bean validation in different methods and the same class
我正在使用 spring 引导进行休息 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
接口以将它们用作您的验证组。
我正在使用 spring 引导进行休息 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
接口以将它们用作您的验证组。