从Angular应用程序接收Spring控制器上的URL参数

时间:2015-07-07 13:20:09

标签: java angularjs spring

在我的春季控制器中,我有这个:

@RequestMapping(value = "/users/{id}", method = RequestMethod.DELETE)
@ResponseBody
public void deleteUser(@RequestParam(value = "id") long id) throws Exception {
    users.delete(id); // It works on tests
}

这里我想删除URL中的传递用户(来自他的ID)。

在我的AngularJS应用程序中,我有这个模块:

angular.module('app')
    .factory('DeleteUserService', function($resource) {
        return $resource('/users/:id', {id:'@id'}, {
            deleteUser: {
                method:'DELETE',
                headers : {'Content-Type': 'application/json'}
            }
        });
    });
});

我从我的用户管理页面调用该模块,其中包含:

DeleteUserService.deleteUser({id:$scope.id}, function() { //$scope.id = 15
    console.log('Correctly deleted!');
});

问题是我收到400错误请求错误:DELETE http://localhost:8080/users/15 [HTTP/1.1 400 Required long parameter 'id' is not present 2ms]

我不明白为什么我的控制器没有看到参数:/

你能帮我找到问题吗?

谢谢,如果您需要其他代码,请不要犹豫。

1 个答案:

答案 0 :(得分:2)

在这种情况下,您必须使用@PathVariable代替@RequestParam