Spring Request Mapping post和put,相同的方法,相同的逻辑,但是

时间:2017-09-12 12:41:54

标签: spring rest post spring-boot put

我有一个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(职位) enter image description here

画面2(放) enter image description here

问题是什么? 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
}

1 个答案:

答案 0 :(得分:0)

我可以看到您@Validated根据JSR-303验证了您的请求正文。

当您POSTPUT时,似乎不一致。它会验证/不验证并返回错误,因为您的正文与ProductDTO上的验证规则不符。

在我看到的所有文档中,您应该执行@Valid @RequestBody之类的操作,而不只是放置@Validated

尝试将其更改为上述内容,看看它现在是否更加一致。