必需的字符串参数 'licenceplate' 不存在”

Required String parameter 'licenceplate' is not present"

我检查了针对类似问题提出的不同现有问题,但我的问题没有得到任何帮助。 事实上,我不能像在 question or this one.

中那样使用 @RequestBody

我正在尝试将一些参数从 Angular 控制器传递到 Spring MVC 控制器,但我收到此错误消息 errorCode:500 message:"Required String parameter 'licenceplate' is not present" 这是我的 Angular 服务:

myApp.httpEnterVehicle = function(levelNumber, placeNumber, licenceplate, placeType) {
    return $http.put("/myApp/rest/vehicle/entervehicle", {
        params : {
            'licenceplate' : licenceplate,
            'placeType' : placeType, 
            'placeNumber' : placeNumber, 
            'levelNumber' : levelNumber
        },
    });
};

我的后端没有检测到任何东西,这似乎很奇怪

@RequestMapping(value = "/entervehicle", method = RequestMethod.PUT)
public ResponseEntity<Void> enterNewVehicle(@RequestParam("licenceplate") String licenceplate, @RequestParam("placeType") String placeType, @RequestParam("levelNumber") int levelNumber, @RequestParam("placeNumber") int placeNumber){
....
}

你知道发生了什么事吗?我已经尝试检查我的 Angular 服务参数的内容,它们是正确的:(

您的放置请求调用不正确,应该如下所示

$http.put('url', //1st parameter
   {}, //request body
   {} //request configuration here
);

如果比较当前的 put 调用,您会发现自己做错了什么。您只需要在请求正文中传递 {}(空对象),然后传递您的配置对象来代替 request body

myApp.httpEnterVehicle = function(levelNumber, placeNumber, licenceplate, placeType) {
    return $http.put("/myApp/rest/vehicle/entervehicle",
      {}, //added blank object as request body
      {
        params : {
            'licenceplate' : licenceplate,
            'placeType' : placeType, 
            'placeNumber' : placeNumber, 
            'levelNumber' : levelNumber
        },
    });
};