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;
我将 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;