如何按条件验证@RequestMapping请求?

时间:2017-11-23 12:26:09

标签: java spring validation spring-mvc hibernate-validator

我正在使用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)语句无效。但它显示了我正在努力实现的目标。

这可能吗?

1 个答案:

答案 0 :(得分:0)

知道了。还必须使用Default.class组来验证没有组的任何字段。

@GetMapping("/sell/product")
public Object sell(@Validated({Default.class, GroupFuture.class}) ProductDTO product) {
}