使用@Min对可空的Integer QueryParam进行ConstraintViolationException

时间:2015-09-03 13:26:39

标签: java jersey jax-rs bean-validation

我正在使用带有bean验证的JAX-RS(Jersey实现),并将以下参数作为我的资源类中的字段:

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

此参数背后的想法是请求中不需要它,但如果它恰好出现在请求中,则其值应介于1和100之间(包括)。

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

所以看起来好像发生了一些奇怪的事情。为什么值不是-1?如果我没有指定参数,为什么会出现此异常?

1 个答案:

答案 0 :(得分:2)

@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;