【发布时间】:2019-11-12 19:13:45
【问题描述】:
我有一个 Spring Boot 控制器,其端点接受以下配置类(作为 json)。该类具有参数maxIterations,并将@Size 注释设置为9000。
...
import javax.validation.constraints.Max;
import javax.validation.constraints.Size;
public class Configuration {
// Max iterations
@Size(max = 9000)
private Integer maxIterations;
...
}
问题在于,当使用以下json 对该端点进行POST 调用时,它不会返回错误或警告,说明maxIterations 参数高于9000。
{
"maxIterations": 15000
}
这是我的控制器:
@PostMapping()
@ResponseStatus(HttpStatus.CREATED)
public String doSomething(@RequestBody Configuration configuration) {
...
}
可能是什么问题?
【问题讨论】:
-
@Size注解只是一个注解。如果您使用使用这些注释的 valdiator,则注释会产生效果;否则什么也不会发生。你在使用验证器吗?如果是这样,请显示代码。如果没有,那就是什么都没有发生的原因。 -
即使验证有效,它也不是你想的那样。
@Sizeannotation 用于限制字符序列和集合的大小。对于约束数字,您应该使用@Min和@Max。 -
最初是
@Max,但效果不佳。 -
您应该将
@Valid或@Validated添加到您的@RequestBody注释方法参数中。如果您不这样做,则不会触发验证。
标签: java spring-boot configuration annotations