@NotNull注释不能像预期的那样工作Java Jersey

时间:2016-03-07 21:22:49

标签: java api rest http

我有一个端点实现,我将一个对象传递给参数列表。我试图使用@NotNull注释验证此对象不为null。

@POST 
@Path("path") 
public Response endpointMethod(@NotNull @ApiParam(value = "abc", required = true) Object object) { 
        return Response.status(Status.OK).build(); 
} 

如果验证对象不为null,则端点将返回200 OK响应。 但是,当我使用指定的路径向此端点发出请求时,并且正文中没有任何内容,则不会抛出任何错误。相反,我能够检索200响应(即使我在返回响应之前检查对象是否为null,它表明情况就是这样)。

有人可以指导我如何以正确的方式验证对象是否为空?

2 个答案:

答案 0 :(得分:7)

如果你对类路径有bean验证依赖(org.glassfish.jersey.ext:jersey-bean-validation:2.22.2),它应该被框架选中并开箱即用。

还要确保您的@NotNull注释来自javax.validation.constraints包

答案 1 :(得分:1)

不确定@ApiParam(来自swagger?),但以下适用于Jersey 2.22:

@GET
@Path("/hz-test")
public Response proc(
            @NotNull @QueryParam("hz") String myvalue) {

我还怀疑你需要将@NotNull与其他一个Jersey参数注释一起使用(例如@QueryParam,@ HeaderParam等)。

BTW,您使用的是什么版本的球衣? (仅在> 2.x AFAIK中支持@NotNull)