Jersey/JAX-RS资源方法输入bean验证

IAm*_*aja 6 java jax-rs jersey bean-validation dropwizard

我通过DropWizard 0.7.1使用Jersey/JAX-RS来公开RESTful服务端点.我的所有实体POJO都注释了JAX-RS和Hibernate/JSR-303 bean验证注释,如下所示:

public class Widget {
    @JsonProperty("fizz")
    @NotNull
    @NotEmpty
    private String fizz;     // Can't be empty or null

    @JsonProperty("buzz")
    @Min(value=5L)
    private Long buzz;       // Can't be less than 5

    // etc.
}
Run Code Online (Sandbox Code Playgroud)

当资源方法接收其中一个POJO作为输入时(在引擎盖下,DropWizard已经将HTTP实体JSON反序列化为一个Widget实例),我想根据Hibernate/Bean验证注释验证它:

@POST
Response saveWidget(@PathParam("widget") Widget widget) {
    // Does DropWizard or Jersey have something built-in to automagically validate the
    // 'widget' instance?
}
Run Code Online (Sandbox Code Playgroud)

可以将DropWizard/Jersey配置为验证我的widget实例,而不必在此处编写任何验证代码吗?

Ada*_*dam 9

@Valid之前添加@PathParam以验证泽西岛.

请参阅https://jersey.java.net/documentation/latest/bean-validation.html#d0e12201

您可能需要进行一些配置.