Java 如何从修补程序修复422状态响应

Java 如何从修补程序修复422状态响应,java,spring-boot,axios,patch,Java,Spring Boot,Axios,Patch,我有一个react前端和java后端。我正在使用axios.patch请求,并不断收到422响应。我不知道怎么了。我想这是正确更新。我正在使用jsonpatch尝试更新这个对象 我试过很多东西。我的要求有问题吗?我不知道 这是我的代码: return API.patch(`bmwsales/updateWeb/${vid}/`, veh, {headers: { 'Authorization' : basic }}) .then((response) =>{

我有一个react前端和java后端。我正在使用axios.patch请求,并不断收到422响应。我不知道怎么了。我想这是正确更新。我正在使用jsonpatch尝试更新这个对象

我试过很多东西。我的要求有问题吗?我不知道

这是我的代码:

 return API.patch(`bmwsales/updateWeb/${vid}/`, veh, {headers: { 
'Authorization' : basic }})
             .then((response) =>{
                    if (response.status==200){
   dispatch(updateVehicleSuccess());
                    }

                }, (error) =>{
                        if (error.response.status == 500){

  dispatch(vehicleError(error.message, "Could not update rfidtag, please try again."));
                        }else if 
(error.response.status == 422){

dispatch(vehicleError(error.message, "Could not update rfidtag, please try again."));
                        }
控制器:

@PatchMapping("/bmwsales/updateWeb/{id}")
public ResponseEntity<?> updateVehicleTagWeb(@PathVariable(value="id") Integer id, @RequestBody Bmwsales v) throws JsonProcessingException{
    ObjectMapper objMapper=new ObjectMapper();
            JsonPatchBuilder jsonPatchBuilder=Json.createPatchBuilder();
    JsonPatch jsonPatch=jsonPatchBuilder.replace("/templocation",v.getTemplocation()).replace("/rfidtag", v.getRfidtag()).build();
    Bmwsales vehicle=bmwService.getVin(id).orElseThrow(ResourceNotFoundException::new);
BmwsalesUpdate veh=oMapper.asInput(vehicle);
    BmwsalesUpdate h=patchHelp.patch(jsonPatch, veh, BmwsalesUpdate.class);
    oMapper.INSTANCE.update(vehicle, h);
        return new ResponseEntity<>(h, HttpStatus.OK);
@PatchMapping(“/bmwsales/updateWeb/{id}”)
public ResponseEntity UpdateHicletAgWeb(@PathVariable(value=“id”)整数id,@RequestBody Bmwsales v)引发JsonProcessingException{
ObjectMapper objMapper=新的ObjectMapper();
JsonPatchBuilder JsonPatchBuilder=Json.createPatchBuilder();
JsonPatch JsonPatch=jsonPatchBuilder.replace(“/templation”,v.getTemplocation()).replace(“/rfidtag”,v.getRfidtag()).build();
Bmwsales vehicle=bmwService.getVin(id).orelsetrow(ResourceNotFoundException::new);
BmwsalesUpdate veh=oMapper.asInput(车辆);
BmwsalesUpdate h=patchHelp.patch(jsonPatch,veh,BmwsalesUpdate.class);
oMapper.INSTANCE.update(车辆,h);
返回新的响应状态(h,HttpStatus.OK);
我想知道如何解决这个问题

错误: js:178补丁422

看起来正在发生这种情况…templocation中当前没有值,我正在尝试更新它…如何更改对象映射器以接受当前值可以为null?我认为这就是问题所在…可能

javax.json.JsonException:“{”id“:69406,“rfidtag”:“E200420C71A06015010B6362”}”不包含名称“templocation”的值


好的,我想我已经解决了这个问题……我更改了我的Jackson配置,将setdefaultpropertyinclusion注释掉,使其仅包含非null。现在可以了。但是现在,我没有更新json补丁试图更新整个对象的两个字段。我如何限制这一点呢?

也许你可以设置
consumes
属性I将
@PatchMapping
与类
MediaType
中的值
APPLICATION\u JSON\u value
value
字段中的URL字符串相关联,同时检查
Bmwsales
对象,查看所有字段是否与您的请求匹配


希望这有帮助。

您可以简化代码一点,将参数
整数id
更改为
Bmwsales vehicle
(spring boot执行某些方面的代理魔法,然后将
id
映射到en
entity
或null)。可能不是精确的
Bmwsales
(如果其DTO),而是映射到实体classP.S.
(@PathVariable(value=“id”)整数id,…
->
(@PathVariable(value=“id”)YurEntityClass vehicle,…
感谢您的响应。我需要将id和Bmwsales对象分开。id是我要更新的Bmwsales对象的id。然后过来的Bmwsales对象有我要更新的2项。@Rostyslavbarmakov感谢您的响应。Bmwsales对象有35个字段。我只需要升级数据我的控制器中的Bmwsales对象只有两个字段不是空的……这是个问题吗?@snake_404;也许,你能把你的Bmwsales代码放在这里吗?或者只是验证你的字段是否没有
必需的
字段或类似的内容。我想你已经这样做了,但以防万一,你调试了你的code并验证您是否可以访问控制器代码?