我有以下类,其中包含带有@NotEmpty注释的errorRequests。
public class ErrorsRequests implements Serializable {
private static final long serialVersionUID = -727308651190295062L;
private String applicationName;
@NotEmpty
@Valid
@JsonProperty("errors")
private List<ErrorsRequest> errorRequests;
我的控制器如下所示:
@Autowired
@Qualifier("errorStreamValidator")
private Validator errorStreamValidator;
@RequestMapping(method = RequestMethod.POST, produces = MediaType.APPLICATION_JSON_VALUE,
consumes = MediaType.APPLICATION_JSON_VALUE)
public ResponseEntity<Void> errorReporting(@NotNull @PathVariable String applicationName,
@Valid @NotNull @RequestBody ErrorsRequests errorsRequests, BindingResult results) {
我在类路径中有所需的hibernate验证器类。
当我输入以下JSON时:
{
"errorss": [
]
}
@NotEmpty验证根本没有启动。 Hibernate验证仅在json中包含errors元素时才有效,如下所示
{
"errors": [
]
}
我可以让第一个案例也有效吗?
答案 0 :(得分:1)
您使用注释的方式错误,并且您的控制器也缺少注释。
您应该使用@Validated注释您的控制器:
@Validated
@RestController
@RequestMapping("/mycontroller")
public class MyController { ... }
在模型类中,您需要像这样放置注释:
@NotEmpty
private List<@Valid Foo> foo;
@Valid批注将检查列表中的项目是否也有效。
答案 1 :(得分:0)
检查你是否在 pom.xml 中包含了这个依赖
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-validation</artifactId>
</dependency>