我有以下两种REST方法:
@PostMapping
public Object create(@ModelAttribute("building") @Validated Building building) {
if (building != null && !(building.getName().equals("") || building.getAddress().equals(""))) {
return buildingDao.save(building);
}
return HttpStatus.NOT_FOUND;
}
@PatchMapping
public Object update(@ModelAttribute("building") @Validated Building building) {
if (building.getId() != null && buildingDao.findById(building.getId()).isPresent()) {
return buildingDao.save(building);
}
return HttpStatus.NOT_FOUND;
}
正如您所看到的那样,它们是精确的,除了一种方法是POST而另一种方法是PATCH。
我的问题是当我使用PATCH方法时,'building'不会映射。我试图删除@Validated,所有字段都为空。已经使用Postman和axios(javascript)进行了测试。我不太明白为什么它不起作用然后POST方法完美无缺。
我正在使用Spring Boot 2.0.0.RELEASE
也许相关代码:控制器定义:
@RestController
@RequestMapping("/buildings")
public class BuildingController { [...] }
如果有必要,我很乐意添加更多代码。
通过将@ModelAttribute更改为@RequestBody来解决此问题。