处理@RequestBody

时间:2017-09-06 06:34:40

标签: java mysql angularjs spring-mvc

JavaScript代码:

function deleteMarks(list){
    $http.post('/api/marks/delete/all',list).then(
    function(response){
      refresh();
    },function(response){
        error(response.data.error)
    }
    );
}

控制器代码:

@PostMapping("/delete/all")
public void deleteMarks(@RequestBody @Validated List<Long> request) {

     marksService.deletemarks(request);

}

服务代码:

public void deletemarks(List<Long> list) {
    for (Long id : list) {
        marksRepository.delete(id);
    }
}

我收到以下错误

angular.js:12759 POST http://localhost:8080/api/marks/delete/all 400()

有人可以告诉我在哪里犯了错误。

2 个答案:

答案 0 :(得分:0)

400错误代码显示错误请求。很可能您的请求结构与预期的请求结构不匹配。

答案 1 :(得分:0)

如果您要通过&#34;标记列表&#34;来自你的JS。控制器处理程序应为:

@PostMapping("/delete/all")
public void deleteMarks(@RequestBody @Validated List<Marks> request) 
{
    marksService.deleteMarks(request);
}

如果您只传递Marks&#34;的&#34; ID,则处理程序方法应为:

@PostMapping("/delete/all")
public void deleteMarks(@RequestBody @Validated List<String> request) 
{
    marksService.deleteMarks(request);
}

同样在您的服务代码中,如果您使用的是JpaRepository的delete方法,则它会将一个Mark对象作为参数,因此您必须在您的服务上运行一个循环标记列表,并为每个标记调用delete