Vu *_*ong 5 java spring-mvc angularjs
我正在尝试弹簧框架.我有RestController和函数:
@RequestMapping(value="/changePass", method=RequestMethod.POST)
public Message changePassword(@RequestBody String id, @RequestBody String oldPass,
@RequestBody String newPass){
int index = Integer.parseInt(id);
System.out.println(id+" "+oldPass+" "+newPass);
return userService.changePassword(index, oldPass, newPass);
}
Run Code Online (Sandbox Code Playgroud)
和代码angularJS
$scope.changePass = function(){//changePass
$scope.data = {
id: $scope.userId,
oldPass:$scope.currentPassword,
newPass:$scope.newPassword
}
$http.post("http://localhost:8080/user/changePass/", $scope.data).
success(function(data, status, headers, config){
if(date.state){
$scope.msg="Change password seccussful!";
} else {
$scope.msg=date.msg;
}
})
.error(function(data, status, headers, config){
$scope.msg="TOO FAIL";
});
}
Run Code Online (Sandbox Code Playgroud)
当我运行它.
错误信息 :
Failed to read HTTP message: org.springframework.http.converter.HttpMessageNotReadableException: Required request body is missing: public com.csc.mfs.messages.Message com.csc.mfs.controller.UserController.changePassword(java.lang.String,java.lang.String,java.lang.String)
Run Code Online (Sandbox Code Playgroud)
帮我解决一下,请...
mha*_*san 21
问题出在此代码中.
@RequestBody String id, @RequestBody String oldPass,
@RequestBody String newPass
Run Code Online (Sandbox Code Playgroud)
您不能
@RequestBody在同一方法中使用多个,因为它只能绑定到单个对象(正文只能被使用一次).
方法1:
对该问题的补救措施创建了一个捕获所有相关数据的对象,而不是创建参数中的对象.
一种方法是将它们全部嵌入到单个JSON中,如下所示
{id:"123", oldPass:"abc", newPass:"xyz"}
Run Code Online (Sandbox Code Playgroud)
并将您的控制器作为单个参数,如下所示
public Message changePassword(@RequestBody String jsonStr){
JSONObject jObject = new JSONObject(jsonStr);
.......
}
Run Code Online (Sandbox Code Playgroud)
方法2:
为您创建自己的自定义实现 ArgumentResolver
| 归档时间: |
|
| 查看次数: |
38209 次 |
| 最近记录: |