我有一个2方法: 第一个创建产品:
@RequestMapping(method = RequestMethod.POST)
public ResponseEntity<?> create(@Validated ProductDTO productDTO){
productService.addProduct(productDTO);
return new ResponseEntity<>("Maxsulot ro'yhatga qo'shildi", HttpStatus.OK);
}
另一个更新产品:
@RequestMapping(method = RequestMethod.PUT)
public ResponseEntity<?> update(@Validated ProductDTO productDTO){
productService.update(productDTO);
return new ResponseEntity<>("Maxsulot ma'lumotlari yangilandi", HttpStatus.OK);
}
现在,我很惊讶,如果我发送相同的数据post方法工作正常(screen1),但是把(screen2)方法返回验证错误。 屏幕截图1(职位)
问题是什么? MyDTO课程:
public class ProductDTO {
private Long id;
private MultipartFile file;
@NotNull
@Size(min = 2, max = 50)
private String productName;
@NotNull
private Long productPrice;
private String productInfo;
@NotNull
private Long categoryId;
private String unitOfMeasurement;
// getters and setters
}
答案 0 :(得分:0)
我可以看到您@Validated
根据JSR-303
验证了您的请求正文。
当您POST
和PUT
时,似乎不一致。它会验证/不验证并返回错误,因为您的正文与ProductDTO
上的验证规则不符。
在我看到的所有文档中,您应该执行@Valid @RequestBody
之类的操作,而不只是放置@Validated
。
尝试将其更改为上述内容,看看它现在是否更加一致。