ConstraintViolationException on nullable Integer QueryParam with @Min

ConstraintViolationException on nullable Integer QueryParam with @Min

我将 JAX-RS(Jersey 实现)与 bean 验证一起使用,并将以下参数作为我的资源中的一个字段 class:

@Min(1) @Max(100)
@QueryParam("imageQuality")
private int imageQuality = -1;

这个参数背后的想法是,它在请求中不是必需的,但如果它恰好出现在请求中,它的值应该在 1 到 100 之间(含)。

当我执行一个简单的 GET(没有这个参数)时,我在这个参数上得到一个 ConstraintViolationException,说值 0(int 的默认值)是无效的。

看起来好像发生了一些奇怪的事情。为什么值不是-1?为什么不指定参数会出现这个异常?

@Min: null elements are considered valid

正如@JB Nizet 评论的那样,你应该这样做。

@QueryParam("imageQuality")
@Min(1)
@Max(100)
private Integer imageQuality;

如果你想要一个默认值,

@DefaultValue("50")
@QueryParam("imageQuality")
@Min(1)
@Max(100)
private int imageQuality;