[英]ajax POST + spring controller parameter passing error
I have strange problem with passing an Int param in POST request to the Spring MVC controller. 我在POST请求中将Int参数传递给Spring MVC控制器时遇到了一个奇怪的问题。
The thing is that a parameter is passed through POST, but didn't parsed by the controller. 问题是参数是通过POST传递的,但没有被控制器解析。
Here is the Code: Spring Controller: 这是代码: Spring Controller:
@Controller
@RequestMapping("user")
public class UserController {
@RequestMapping(value = "/register", method = RequestMethod.POST)
@ResponseBody
public JsonResponse AddUser(@RequestBody User user){
System.out.println(user.getCondoID());
System.out.println(user.getPassword());
System.out.println(user.getUsername());
*** SOME MY STUFF ***
}
User model: 用户模型:
public class User {
private String username;
private String password;
private int condo_id;
private List<String> roles;
public List<String> getRoles() {
return roles;
}
public void setRoles(List<String> roles) {
this.roles = roles;
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public int getCondoID() {
return condo_id;
}
public void setCondoID(int condo_id) {
this.condo_id = condo_id;
}
}
How do i send POST in Angular(example): 如何在Angular中发送POST(示例):
$scope.choosenCondo.id = "7";
var formData = {
"username" : $scope.registerUser.email,
"password" : $scope.registerUser.password,
"condo_id" : parseInt($scope.choosenCondo.id)
};
var req = {
method: 'POST',
url: '/api/user/register',
headers: {
'X-CSRF-TOKEN': $('input[name="_csrf"]').val(),
'Upgrade-Insecure-Requests': "1",
//'Content-Type': "application/x-www-form-urlencoded"
'Content-Type': 'application/json'
},
data: formData
}
$http(req)
So, for System.out.println(user.getCondoID());
因此,对于
System.out.println(user.getCondoID());
i receive "0" in log. 我在日志中收到“ 0”。 But the POST data looks like this for example:
{"username":"4t654y54y54y","password":"1q2w3e","condo_id":2}
so the param is sent in POST. 但是POST数据看起来像这样:
{"username":"4t654y54y54y","password":"1q2w3e","condo_id":2}
因此,参数在POST中发送。 What can be a reason of this trouble? 造成这种麻烦的原因是什么?
Your User Model should be like 您的用户模型应该像
public class User {
private String username;
private String password;
private int condo_id;
private List<String> roles;
public List<String> getRoles() {
return roles;
}
public void setRoles(List<String> roles) {
this.roles = roles;
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public int getCondo_id() {
return condo_id;
}
public void setCondo_id(int condo_id) {
this.condo_id = condo_id;
}
/*
public int getCondoID() {
return condo_id;
}
public void setCondoID(int condo_id) {
this.condo_id = condo_id;
}
*/
}
It didn't find the actual setter method to set the value for the property "condo_id". 它没有找到设置属性“ condo_id”的值的实际设置方法。
So, for System.out.println(user.getCondoID()); i receive "0" in log.
By java nature, primitive value default initialized to 0, so it is printing 0 根据Java的性质,原始值默认初始化为0,因此它输出0
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.