Java @NotNull注释未按预期工作
我有一个端点实现,我在参数列表中将对象传递给它。我试图使用@NotNull注释验证此对象是否为nullJava @NotNull注释未按预期工作,java,api,rest,http,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(); } 如果对象被验证为非空,那么端点将只返回一
@POST
@Path("path")
public Response endpointMethod(@NotNull @ApiParam(value = "abc", required = true) Object object) {
return Response.status(Status.OK).build();
}
如果对象被验证为非空,那么端点将只返回一个200OK响应。
但是,当我使用指定的路径向该端点发出请求,并且在主体中没有任何内容时,不会抛出任何错误。相反,我能够检索200响应(即使我在返回响应之前检查对象是否为null,也表明情况就是这样)
有人能指导我如何以正确的方式验证对象是否为null吗?不确定@ApiParam(来自swagger?),但以下内容适用于Jersey 2.22:
@GET
@Path("/hz-test")
public Response proc(
@NotNull @QueryParam("hz") String myvalue) {
我还怀疑您需要将@NotNull与其他Jersey参数注释(例如@QueryParam、@HeaderParam等)一起使用
顺便问一下,你用的是什么版本的球衣?(@NotNull仅在>2.x AFAIK中受支持)如果您在类路径(org.glassfish.jersey.ext:jersey bean validation:2.22.2)上有bean验证依赖项,那么框架应该选择它,并进行开箱即用的工作
还要确保@NotNull注释来自javax.validation.constraints包您使用的确切注释是什么?是来自
javax.validation.constraints
package的吗?@Cosu是的,就是这个包。谢谢!添加jersey bean验证依赖项解决了此问题。@CandleCoder您共享最小设置,但此设置不起作用?通过将jersey bean验证
依赖项添加到我的pom.xml中,这对我很有效,然后在我的模型中使用@NotNull
,并在@POST
资源处理程序的方法参数上使用@Valid
。对我来说效果不太好。但是谢谢你的帮助。