[英]ajax POST + spring controller parameter passing error
我在POST請求中將Int參數傳遞給Spring MVC控制器時遇到了一個奇怪的問題。
問題是參數是通過POST傳遞的,但沒有被控制器解析。
這是代碼: 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 ***
}
用戶模型:
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;
}
}
如何在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)
因此,對於System.out.println(user.getCondoID());
我在日志中收到“ 0”。 但是POST數據看起來像這樣: {"username":"4t654y54y54y","password":"1q2w3e","condo_id":2}
因此,參數在POST中發送。 造成這種麻煩的原因是什么?
您的用戶模型應該像
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;
}
*/
}
它沒有找到設置屬性“ condo_id”的值的實際設置方法。
So, for System.out.println(user.getCondoID()); i receive "0" in log.
根據Java的性質,原始值默認初始化為0,因此它輸出0
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.