如何按条件验证@RequestMapping 请求?
How to validate @RequestMapping requests by condition?
我正在使用 hibernate validations
验证 spring @RestController
中的传入请求。
问题:我想在多个端点中重复使用同一个 DTO
对象。但仅按条件验证某些字段(例如仅在特定端点上)。
@RestController
public class ProductsServlet {
@GetMapping("/avail/product")
public Object avail(@Valid ProductDTO product) {
//should validate id field only
}
@GetMapping("/sell/product")
public Object sell(@Valid(with = GroupFuture.class) ProductDTO product) {
//should validate id + from field
}
}
public class ProductDTO {
@NotNull
@NotBlank
private String id;
@Future(groups = GroupFuture.class)
private Date from;
}
@Valid(with = GroupFuture.class)
当然是无效的。但它显示了我正在努力实现的目标。
这可能吗?
知道了。还必须使用 Default.class
组来验证任何没有组的字段。
@GetMapping("/sell/product")
public Object sell(@Validated({Default.class, GroupFuture.class}) ProductDTO product) {
}
我正在使用 hibernate validations
验证 spring @RestController
中的传入请求。
问题:我想在多个端点中重复使用同一个 DTO
对象。但仅按条件验证某些字段(例如仅在特定端点上)。
@RestController
public class ProductsServlet {
@GetMapping("/avail/product")
public Object avail(@Valid ProductDTO product) {
//should validate id field only
}
@GetMapping("/sell/product")
public Object sell(@Valid(with = GroupFuture.class) ProductDTO product) {
//should validate id + from field
}
}
public class ProductDTO {
@NotNull
@NotBlank
private String id;
@Future(groups = GroupFuture.class)
private Date from;
}
@Valid(with = GroupFuture.class)
当然是无效的。但它显示了我正在努力实现的目标。
这可能吗?
知道了。还必须使用 Default.class
组来验证任何没有组的字段。
@GetMapping("/sell/product")
public Object sell(@Validated({Default.class, GroupFuture.class}) ProductDTO product) {
}