Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
400使用AngularJs访问Sprint Rest方法时请求错误_Angularjs_Spring - Fatal编程技术网

400使用AngularJs访问Sprint Rest方法时请求错误

400使用AngularJs访问Sprint Rest方法时请求错误,angularjs,spring,Angularjs,Spring,我试图用AngularJs访问更新rest方法,但它给了我400个错误请求 这是我的密码 @RestController @RequestMapping("/api/loggedInUser") public class UserController { @RequestMapping(value = "/{id}",method = RequestMethod.PUT) public AppUser updateLoggedInUser(@RequestBody AppUser u

我试图用AngularJs访问更新rest方法,但它给了我
400个错误请求

这是我的密码

@RestController
@RequestMapping("/api/loggedInUser")
public class UserController { 

@RequestMapping(value = "/{id}",method = RequestMethod.PUT)
    public AppUser updateLoggedInUser(@RequestBody AppUser user){
        return userService.updateAppUser(user);
    }

}
以下是从AngularJs访问服务的代码:

App.factory('LoggedInUserService', ['$resource', function($resource) {
        console.log('service injected');
        return {
            getLoggedInUser: $resource('api/loggedInUser', {}, {
                query: {method: 'GET'}
            }),
            updateLoggedInUser: $resource('api/loggedInUser/:id', {}, {
                update: {method: 'PUT', params: {id: '@id'}}
            })
        };
    }]);
下面是访问我的
app.js
文件中的服务的代码

.run(function($location, $rootScope, LoggedInUserService) {

            LoggedInUserService.getLoggedInUser.query(function(loggedInUser) {

                $rootScope.loggedInUser = loggedInUser;
                console.log($rootScope.loggedInUser.username);
                if (loggedInUser.role[0].authority === 'ADMIN_ROLE' && loggedInUser.pristineAccess) {
                    $rootScope.loggedInUser.isAdmin = true;
                    $rootScope.pristineAccess = false;
                    LoggedInUserService.updateLoggedInUser.update($rootScope.loggedInUser);
                    $location.path('/admin');
                } else {
                    $rootScope.loggedInUser.isAdmin = false;
                    $location.path('/dashboard');
                }
            });

        });
当我删除
@RequestBody
注释时,我没有得到400错误,但是参数没有填充


我做错了什么?我在同一个应用程序的另一个地方使用了同样的代码,效果很好。这里唯一的区别是rest方法参数是实体对象,而不是pojo

consumes=MediaType.APPLICATION_JSON_VALUE添加到控制器方法中,并使用web developers工具或firebug或simmilar工具检查帖子内容

@RequestMapping(value = "/{id}", consumes = MediaType.APPLICATION_JSON_VALUE,method = RequestMethod.PUT)
    public AppUser updateLoggedInUser(@RequestBody AppUser user){
        return userService.updateAppUser(user);
    }

尝试添加它,但得到相同的错误。当检入firebug时,我看到传递了一个有效的json对象。我觉得这与将json对象转换为java对象有关。但不知道如何调试它。我认为缺少@PathVariable(“id”),我的印象是,如果它是一个对象,我们使用RequestBody,如果它是一个基本类型,我们使用PathVariable。但我不是100%确定。@path变量是url的一部分,在您的例子中,它是您的id,因为您有@RequestMapping(value=“/{id}”),请解释请求中的
id
path变量的含义,为什么不使用它,并显示请求发送的AppUser类和json对象。这比猜测所有内容都要简单。。。