我正在使用具有bean验证的JAX-RS(泽西实现),并且在我的资源类中将以下参数作为字段:
@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;