저는 Spring MVC에 조금 익숙한 데, 하나의 객체와 다른 객체의 배열이라는 두 개의 매개 변수를 전달하는 컨트롤러 메소드 중 하나에 문제가 있습니다. 나는 API 컨트롤러에 데이터를 게시하는 Ajax 호출을 사용하고 있습니다, 그러나 나는 다음과 같은 오류가 객체의 배열마다 시간을 반환받을 : 실패Spring MVC를 사용하여 컨트롤러에 객체 배열 전달하기
컨트롤러 방법이다 : 중첩 예외 java.lang.NoSuchMethodException이다는 [[Lcom.name.models.UserAccessListMembers를 인스턴스화; ] : 기본 생성자가 없습니다. 자바 스크립트 여기
@ResponseBody @RequestMapping(value = "/api/user/save/accesslist", method = RequestMethod.POST) public String saveAccessList(UserAccessLists list, UserAccessListMembers[] members){ <code here> }
된다 : 여기서
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 배경에서 내가 무엇을 잘못하고 있는지 또는 조각을 놓치고 있는지 잘 모르겠습니다.
스프링 MVC로 클래스를 올바르게 맵핑하고 인스턴스화하는 방법을 알 수있는 사람이 있습니까? MVC Controller에 객체를 보내기위한 java의 모범 사례는 무엇입니까?
이 매개 변수에'@ RequestParam' 또는'@ RequestBody'가 필요하지 않습니까? –
행운과 함께 RequestParam 시도하고 그냥 RequestBody 시도한 "콘텐츠 형식이 지원되지 않습니다 - urlformencoded ..."오류를 throw합니다. – Encryption
아, 아마도 두 개의 json 매개 변수가 있기 때문에 단일 클래스 및 요청 본문 주석을 사용합니다. –