我正在使用hibernate validations
来验证春季@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)
语句无效。但它显示了我正在努力实现的目标。
这可能吗?
答案 0 :(得分:0)
知道了。还必须使用Default.class
组来验证没有组的任何字段。
@GetMapping("/sell/product")
public Object sell(@Validated({Default.class, GroupFuture.class}) ProductDTO product) {
}