Failed to instantiate [java.util.List]: Specified class is an interface
3288 단어 java 관련
Failed to instantiate [java.util.List]: Specified class is an interface;
오류 정보 뜻: 파라미터 오류, 파라미터가 문제를 봉인했습니다.
이유:
전단에서 백엔드에list 대상을 전달했습니다. 원래는list로 직접 수신할 수 있을 것이라고 생각했지만, 실행 방법이 잘못되었고, 매개 변수가 잘못되었습니다.질문 오류, 전방에서 전달된 대상입니다. 백엔드에 set, get의 실체가 수신되지 않았습니다.
controller에서 매개 변수List에 봉인된 것은 기본 데이터 형식이 아니라 대상입니다.spring MVC 소스 가져오는 프론트 데스크톱의 매개 변수는 다음과 같습니다:request.getParameter (") 에서 파라미터를 수신합니다. 그러면 파라미터를 봉인할 때 문제가 발생합니다.
해결 방법:
첫 번째 방법:
VO 객체를 다시 패키지화합니다.
import java.util.List;
public class ConfigListForm {
private List ConfigList;
public List<Config> getConfigList() {
return ConfigList;
}
public void setConfigList(List configList) {
ConfigList = configList;
}
}
결함:
이런 방식은 수신한 데이터를 처리하기가 쉽지 않다.내가 받아들이고 싶은 데이터는 config 대상의 수조이지만 수신한 데이터는 [{configName=111, configId=111}, {configName=222, =222}이다. 내 대상에 자동으로 봉인할 수 없고 configName, configId를 Config 대상에 봉인하지 않았다.
두 번째 방법:
그룹 서열을 Json 문자열로 변환해서 제출할 수 있습니다. 백엔드springmvc에서 @ RequestBody String 방식으로 수신한 다음, 이 수신된 json 열을 json 도구로 그룹으로 변환하면 springmvc가 대상 그룹을 연결할 수 없는 문제를 해결할 수 있습니다.
대상 그룹을 {"list": JSON.stringify (array)} 백엔드에 연결하고 백엔드에서 @RequestBody String configs로 수신하고 json 데이터를 받은 다음 jackson으로 configs를 그룹 List configList로 전환합니다.
var configList= JSON.stringify([ {configName: “sgs-demo”, configId: “1”}, {configName: “sgs-demo-1”, configId: “2”} ]);
$.ajax({
type: "post",
url: "/config",
data:configs ,
contentType: "application/json; charset=utf-8",
dataType: "json",
success: function (response, ifo) {
alert("success");
}, error: function () {
alert("error");
}
})
데이터Type:'json',//예상되는 서버 응답의 데이터 형식입니다.
콘텐츠Type: "application/json;charset=utf-8",//서버에 데이터를 보낼 때 사용하는 내용 형식입니다.기본값은 "응용 프로그램/x-www-form-urlencoded"입니다.
contentType을 추가하지 않으면 configs가 받은 데이터는% 7B% 22id% 22% 3 A243% 2 C% name% 22% 3 A4% 2 C% 22 age% 2% 3 A10 48% 2 C% 22 형식으로 json 변환이 잘못되고 controller 층 @Request Mapping (value = "/config",method = Request Method. POST) public void my Domain (Http Servlet Request Request Request Request Request Request Request Request Request, Request Request @ Bopting Exconfi
ObjectMapper objectMapper = new ObjectMapper();
JavaType javaType = objectMapper.getTypeFactory().constructParametricType(List.class, configs.class);
List list = objectMapper.readValue(configs, javaType);
System.out.println("");
}
세 번째 방법:spring3.2 일반 집합 직접 지원
spring 3.2는 List Map과 같은 일반 컬렉션을 직접 지원합니다.