执行特定组的 javax 验证
Executing specific group of javax validations
在我的应用程序中,我有一个端点,它获取此对象的 JSON,然后调用 calculateSomething()
到 return 作为 http 响应的数字。我正在使用 javax.validation
验证这些值。现在有没有一种方法可以指定 class Example
的对象是如何被验证的,或者这个对象的哪些值将在这个特定的端点(我有多个端点)中被验证?例如,在这种情况下,如果调用此端点,则只有 one
、two
和 three
将被验证,因为这些是 calculateSomething()
所需的唯一值。
class:
@Entity
@PrimaryKeyJoinColumn(name = "five")
public class Example extends Foo {
@ValidOne
@Column
private Integer one;
@ValidTwo
@Column
private Integer two;
@ValidThree
@Column
private Integer three;
@ValidFour
@Column
private Integer four;
@ValidFive
@Column
private Integer five;
@Override
public Integer calculateSomething() throws IllegalArgumentException{
(one + two) * three
}
}
端点:
@PostMapping ("/calculateSomeNumber")
public ResponseEntity calculateSomeNumber(@Valid @RequestBody Example example){
return ResponseEntity.ok(example.calculateSomething());
}
您可以声明可以表示为组名称的接口。然后在定义验证约束时将其应用于特定组。要仅使用特定的验证组进行验证,只需将其应用于相关的控制器方法
public interface ValidOne {
}
public interface ValidTwo {
}
public class SomeController {
@PostMapping ("/calculateSomeNumber")
public ResponseEntity calculateSomeNumber(@Validated({ValidOne.class}) @RequestBody Example example){
return ResponseEntity.ok(example.calculateSomething());
}
...
@Entity
@PrimaryKeyJoinColumn(name = "five")
public class Example extends Foo {
@Column
@NotNull(groups = ValidOne.class)
private Integer one;
@Column
@NotNull(groups = ValidTwo.class)
private Integer two;
....
在我的应用程序中,我有一个端点,它获取此对象的 JSON,然后调用 calculateSomething()
到 return 作为 http 响应的数字。我正在使用 javax.validation
验证这些值。现在有没有一种方法可以指定 class Example
的对象是如何被验证的,或者这个对象的哪些值将在这个特定的端点(我有多个端点)中被验证?例如,在这种情况下,如果调用此端点,则只有 one
、two
和 three
将被验证,因为这些是 calculateSomething()
所需的唯一值。
class:
@Entity
@PrimaryKeyJoinColumn(name = "five")
public class Example extends Foo {
@ValidOne
@Column
private Integer one;
@ValidTwo
@Column
private Integer two;
@ValidThree
@Column
private Integer three;
@ValidFour
@Column
private Integer four;
@ValidFive
@Column
private Integer five;
@Override
public Integer calculateSomething() throws IllegalArgumentException{
(one + two) * three
}
}
端点:
@PostMapping ("/calculateSomeNumber")
public ResponseEntity calculateSomeNumber(@Valid @RequestBody Example example){
return ResponseEntity.ok(example.calculateSomething());
}
您可以声明可以表示为组名称的接口。然后在定义验证约束时将其应用于特定组。要仅使用特定的验证组进行验证,只需将其应用于相关的控制器方法
public interface ValidOne {
}
public interface ValidTwo {
}
public class SomeController {
@PostMapping ("/calculateSomeNumber")
public ResponseEntity calculateSomeNumber(@Validated({ValidOne.class}) @RequestBody Example example){
return ResponseEntity.ok(example.calculateSomething());
}
...
@Entity
@PrimaryKeyJoinColumn(name = "five")
public class Example extends Foo {
@Column
@NotNull(groups = ValidOne.class)
private Integer one;
@Column
@NotNull(groups = ValidTwo.class)
private Integer two;
....