JAX-RS会支持验证组吗?

时间:2017-01-29 18:11:53

标签: jax-rs bean-validation

来自JSR-339:

  

为简单起见,JAX-RS实现不需要支持Default以外的处理组。

这严重限制了JAX-RS中验证的有用性,因为例如对于创建和更新,您通常使用相同的模型对象,但是对于创建,不应提供对象的ID,并且为了更新,应提供ID,可以使用验证组轻松验证。通常,在多个流程中使用的所有模型对象都无法验证。

我不理解simple参数,因为Bean Validation已经支持组,因此JAX-RS实现只需要将一个组传递给Bean Validation实现,如Hibernate Validator。

那么有没有计划将验证组添加到JAX-RS?

1 个答案:

答案 0 :(得分:11)

事实证明它确实支持验证组。来自同一个JSR-339:

  

@Valid的存在将触发验证装饰Java bean类的所有约束注释。除非 @ConvertGroup 注释存在,否则此验证将在默认处理组中进行。

例如,这是在我的自定义CreateUpdate组而不是Default组中验证帐户bean的方法:

@POST
@Consumes(MediaType.APPLICATION_JSON)
Response createAccount(@Valid @ConvertGroup(from = Default.class, to = Create.class)
    Account account)

@POST
@Consumes(MediaType.APPLICATION_JSON)
Response updateAccount(@Valid @ConvertGroup(from = Default.class, to = Update.class)
    Account account)

public class Account {

    @Null(groups = Create.class)
    @NotNull(groups = Update.class)
    private String Id;

}

public interface Create {}

public interface Update {}