我正在使用具有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;

10-04 13:54