鉴于:
@Data
@NoArgsConstructor
@AllArgsConstructor
@Builder
public class VocabularyRequest {
@Null(groups = CollectionCreation.class)
@NotNull(groups = VocabularyCreation.class)
private Long collectionId;
@Valid private List<MeaningVariantRequest> meaningVariants;
}
这个
@Validated
有效:
@PostMapping(consumes = APPLICATION_JSON_VALUE)
@ResponseStatus(HttpStatus.CREATED)
@Override
public Mono<VocabularyResponse> create(
@Validated(VocabularyCreation.class) @RequestBody VocabularyRequest request) {
return super.create(request);
}
但这(应用于
List
)不是:
@PostMapping(value = "/bulk", consumes = APPLICATION_JSON_VALUE)
@ResponseStatus(HttpStatus.CREATED)
@Validated(VocabularyCreation.class)
public Flux<VocabularyResponse> createBatch(
@RequestBody List<@Valid VocabularyRequest> requests) {
return service(VocabularyService.class).createBatch(requests);
}
改成这样,还是不行:
@PostMapping(value = "/bulk", consumes = APPLICATION_JSON_VALUE)
@ResponseStatus(HttpStatus.CREATED)
public Flux<VocabularyResponse> createBatch(
@Validated(VocabularyCreation.class) @RequestBody List<VocabularyRequest> requests) {
return service(VocabularyService.class).createBatch(requests);
}
如果更改为
@RequestBody List<@Validated(VocabularyCreation.class) VocabularyRequest> requests
,则会出现编译错误:
'@Validated' not applicable to type use
如标题,有解决办法吗?感谢您的帮助!!
您需要创建
VocabularyBulkRequest
,其中包含 VocabularyRequest
列表。
它会改变你的 API,但是将列表放在顶层无论如何都是不好的做法。