簡體   English   中英

ajax POST + spring控制器參數傳遞錯誤

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM