来自JSR-339:
为简单起见,JAX-RS实现不需要支持Default以外的处理组。
这严重限制了JAX-RS中验证的有用性,因为例如对于创建和更新,您通常使用相同的模型对象,但是对于创建,不应提供对象的ID,并且为了更新,应提供ID,可以使用验证组轻松验证。通常,在多个流程中使用的所有模型对象都无法验证。
我不理解simple参数,因为Bean Validation已经支持组,因此JAX-RS实现只需要将一个组传递给Bean Validation实现,如Hibernate Validator。
那么有没有计划将验证组添加到JAX-RS?
答案 0 :(得分:11)
事实证明它确实支持验证组。来自同一个JSR-339:
@Valid的存在将触发验证装饰Java bean类的所有约束注释。除非 @ConvertGroup 注释存在,否则此验证将在默认处理组中进行。
例如,这是在我的自定义Create
或Update
组而不是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 {}