【发布时间】:2014-12-06 02:43:51
【问题描述】:
我使用 Spring MVC 和 AngularJs 来创建一个 Web 应用程序。我向服务器发送了一个请求,但我收到了400 error bad request。我在 Spring servlet 配置文件中配置了 json 格式的消息转换器。我想知道为什么会出现此错误。
这是我的角度服务:
save : function(user) {
return $http({
method: 'POST',
url: '/app-web/user/create',
contentType: "application/json",
data:user
});
}
在服务器端,我有一个 Spring MVC 控制器,如下所述:
@RequestMapping(value="/user/create", method= RequestMethod.POST)
@ResponseBody
public String createAccount(@RequestBody User user){
//some logic
return "Ok";
}
我注意到了其他事情:当我删除控制器中的 @RequestBody 时,我没有出现 400 错误,但用户是 null:
@RequestMapping(value="/user/create", method= RequestMethod.POST)
@ResponseBody
public String createAccount(User user){
//some logic
return "Ok";
}
【问题讨论】:
-
您传入的“用户”对象是有值还是为空?
-
我无法访问 Spring MVC 控制器。在 Angularjs 控制器中,用户具有价值
-
如果您使用 Chrome 或 IE 并打开开发者工具 (F12) 并在“save : function(user) {”行放置断点。运行它,当代码到达断点时,将鼠标悬停在“用户”上。将出现一个工具提示,其中包含您悬停的项目的值。它是说 null 还是有值?要尝试的另一件事是查看它尝试访问的确切 URL(同样,使用开发人员工具)。它尝试访问的确切 URL 可能与您预期的不同。
-
Losbear 我使用 firebug 在 angularjs 端查看用户的价值。用户有价值。但是当请求被发送到服务器时,我有 400 个错误请求。当我删除 @RequestBody 我到达 Spring Controller 但用户对象不包含值
-
啊,好的。所以“用户”对象与客户端传入的用户对象不匹配。也许客户端的属性之一为空,但服务器端的用户对象不可为空。还要检查名称的大小写。 MVC 尝试为您自动映射它,但如果对象太复杂,它很容易损坏。作为最后的手段(踢球),注释掉“public String createAccount(@RequestBody User user){”并替换为“public String createAccount(@RequestBody string user){”并传递一个带有角度的字符串,看看它是否收到.
标签: java angularjs spring spring-mvc