Я немного новичок в Spring MVC, и у меня возникают проблемы с одним из моих методов контроллера, где я передаю два параметра: один объект и другой массив объектов. Я использую вызов Ajax, чтобы отправить данные в контроллер API, но я получаю следующее сообщение об ошибке возвращается каждый раз, когда для массива объектов:Передача массива объектов контроллеру с помощью Spring MVC
Не удалось создать экземпляр [[Lcom.name.models.UserAccessListMembers; ]: Конструктор по умолчанию не найден; вложенное исключение java.lang.NoSuchMethodException:
Вот метод управления:
@ResponseBody
@RequestMapping(value = "/api/user/save/accesslist", method = RequestMethod.POST)
public String saveAccessList(UserAccessLists list, UserAccessListMembers[] members){
<code here>
}
Вот это JavaScript:
var newEntries = [];
var newEntry = {"id" : null, "listId" : 1, "wwid" : "abc123" };
newEntries.push(newEntry);
var theList = {"id": 1, "userId" : null, "name": "new list" };
$.ajax({
method: "POST",
url: window.contextPath + '/api/user/save/accesslist',
data: {list : theList, members : newEntries },
async: false,
cache: false,
success: function() {
<do stuff>
},
error: function (xhr, textStatus, errorThrown) {
console.log("xhr: ", xhr);
}
});
И, наконец, вот это класс UserAccessListMembers:
public class UserAccessListMembers implements java.io.Serializable {
private Integer id;
private Integer listId;
private String wwid;
private String personName;
public UserAccessListMembers() {
}
public UserAccessListMembers(Integer id, Integer listId, String wwid) {
this.id = id;
this.listId = listId;
this.wwid = wwid;
}
< getters and setters below here >
}
Вы можете видеть, что у меня есть два конструктора класса UserAccessListMembers, конструктор по умолчанию и один, который включает в себя все необходимые свойства. Я не уверен, что я делаю неправильно, или если мне не хватает части, поскольку я родом из фона .NET MVC.
Может ли кто-нибудь помочь мне выяснить, как получить Spring MVC для правильной карты и создания экземпляра класса? Каковы некоторые из лучших практик в java здесь для отправки объектов в MVC-контроллер?
Нам не нужны '@ RequestParam' или' @ RequestBody' для этих параметров? –
Я попробовал RequestParam без везения и просто попробовал RequestBody, он выдает сообщение об ошибке «Тип контента не поддерживается - urlformencoded ...» – Encryption
А, может быть, потому, что у вас есть два параметра json, попробуйте обернуть их в один класс и аннотации тела запроса запроса. –