【发布时间】:2018-11-06 11:30:16
【问题描述】:
@Valid 注解在使用@RequestPart 时不会调用验证器。在其他地方,我使用了@Valid 和@RequestBody,效果很好。
也没有错误只是通过了错误的验证。
下面是代码。
@InitBinder("campaignCreatorDTO")
public void initCreatorDTOBinder(WebDataBinder binder) {
binder.addValidators(new CreatorDTOValidator());
}
@PostMapping(value = "/creator", consumes = {"multipart/form-data"}, produces = {"application/json"})
@ResponseBody
@ResponseStatus(HttpStatus.CREATED)
public @Valid
ResponseDTO creator(@Valid @RequestPart("json") CampaignCreatorDTO campaignCreatorDTO,
@RequestPart(name = "file", required = false) MultipartFile adGraphic) {
}
【问题讨论】:
-
您正在覆盖验证器并将其绑定到模型属性。从
@InitBinder中删除"campaignCreatorDTO",然后重试。如果失败(因为您随后设置了全局验证器)尝试使用参数名称json而不是模型参数名称。
标签: java spring spring-mvc spring-boot spring-validator