У меня есть странная проблема с передачей параметра Int в запросе POST на контроллер Spring MVC.ajax POST + параметр ошибки контроллера контроллера
Дело в том, что параметр передается через 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;
}
}
Как отправить 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. Что может быть причиной этой проблемы?
Может быть, ваш 'геттер/setter' для condo_id переменного не следует конвенциям номенклатуры, так condo_id не может сериализовать correclty. Не могли бы вы попробовать изменить эти методы для 'getCondo_id()' и 'setCondo_id (int condo_id)'? или изменение имени переменной из condo_id в condoId. – troig
другое предположение - для класса пользователя может потребоваться конструктор по умолчанию. – freakman
«Не могли бы вы попробовать изменить эти методы» изменить его на что? – user1935987