我正在尝试使用一个或多个特定验证组来验证REST方法的输入,但到目前为止,我一直无法弄清楚如何正确地执行它。我正在使用RESTeasy 3.X和Hibernate Validator 5.X。
我知道在Bean Validation 1.1规范之前,RESTeasy方法可以用以下内容注释:
@ValidateRequest(groups=MyGroup.class)
但是,Hibernate Validator 5.X中不再存在此功能。
假设我有一个像:
这样的实体 @Entity
@Table(name = "example_table")
@XmlRootElement
public class ExampleEntity implements Mappable, Serializable
{
// ...
@Column(name = "title")
@NotEmpty(groups = Default.class, ExampleEntityGroup.class)
@Size(max = 255)
private String title;
@Column(name = "description")
@NotEmpty(groups = Default.class)
@Size(max = 255)
private String description;
// ...
}
现在我想定义一个REST PUT方法来更新这个实体,我希望“description”字段允许一个空值。为此,我想使用我定义的ExampleEntityGroup
组验证实体(而Default
组将用于验证创建新对象的POST请求。)
现在我的更新方法界面类似于:
@Path("{id}")
@PUT
@Consumes(...)
@Produces(...)
ExampleEntity update(@PathParam("id"), ExampleEntity exampleEntity);
但是,如上所述,它将始终使用exampleEntity
验证组验证Default
。我该怎么做才能强制update()
方法使用其他验证组?
我能找到的唯一与此类似的文档是example from the Bean Validation spec that uses an interceptor。还有更好的方法吗?
答案 0 :(得分:1)