我正在使用带有bean验证的JAX-RS(Jersey实现),并将以下参数作为我的资源类中的字段:
@Min(1) @Max(100)
@QueryParam("imageQuality")
private int imageQuality = -1;
此参数背后的想法是请求中不需要它,但如果它恰好出现在请求中,则其值应介于1和100之间(包括)。
当我执行一个简单的GET(没有这个参数)时,我得到一个ConstraintViolationException
这个参数,说值0
(int的默认值)是无效的。
所以看起来好像发生了一些奇怪的事情。为什么值不是-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;