2014-08-29 2 views
0

컨트롤러 배열에 객체의 배열을 전달해야합니다.스프링 컨트롤러에 JSON 배열 전달

http://java2practice.com/2013/03/14/how-to-pass-json-object-string-or-jsonarray-string-from-javascript-to-spring-controller/

내가 내 프로젝트의 예를 복제했지만 내가 전화 할 때마다 나는 "잘못된 요청"오류 : 여기의 예에서 설명처럼 @RequestBody를 사용하는 것을 시도하고있다. 나는 이것이 스프링 4와 잭슨 2를 사용하고 있기 때문에 이것이 용의주도하다고 생각하지만 나는 그것을 작동시키는 방법을 잃어 버렸다.

이 환경에서 작동해야합니까? 이 작업을 수행하는 더 좋은 방법이 있습니까?

+0

요청이 실패 할 때 로그 내용을 게시 할 수 있습니까? – geoand

+0

@Steview'dataType : 'json', ' –

답변

1

예이 환경에서 작동해야합니다 (예 : 스프링 및 잭슨 버전 사용). 그와 같은 미스터리 오류에 직면했을 때 실패한 라이브러리에 대해 TRACE에 로그 설정을 적용해야합니다.

내 IDE에서이 예제를 설정하고 (예 : Spring4와 Jackson2를 그대로 사용), 400 개의 "잘못된 요청"오류가 발생했습니다. 나는 Jackson2 예외를 뱉어 것을 찾을 org.springframework.webcom.fasterxml.jackson.core에 디버그 설정을 마약 :

com.fasterxml.jackson.databind.JsonMappingException: Can not deserialize instance of ca.ted.TestController$Person[] out of START_OBJECT token 

이 때문에 JSON이 jQuery.ajax() 호출에 공급되는이었다. 나는 배열을 감싸는 "persons":{} 개체를 제거하고 대신 단지 배열 전송 :

var arr = [ 
      { 
       "firstName" : "Ramesh", 
       "id" : "id1", 
       "lastName" : "Kotha" 
      }, 
      { 
       "firstName" : "Sathish", 
       "id" : "id2", 
       "lastName" : "Kotha" 
      } 
     ]; 

내가 이런 짓을하지만, 다음과 같은 예외가 발생했습니다

com.fasterxml.jackson.databind.JsonMappingException: No suitable constructor found for type [simple type, class ca.ted.TestController$Person]: can not instantiate from JSON object (need to add/enable type information?) 

Person가있는 내부 클래스이기 때문에이 있었다 밝혀 내 제어 장치. 나는 그것을 자신의 파일 ca.ted.Person로 옮겼으며 모든 것이 잘되었다.

희망이 도움이됩니다.

+0

에 감사드립니다. 에드워드에게 감사드립니다. JSON이 문제였습니다. – StevieJ81

+0

사실 저는 새로운 문제에 부딪 혔습니다. JSON은 컨트롤러에 의해 성공적으로 구문 분석되지만 항상 "허용되지 않음"이라는 오류를 반환합니다. 로그 보고서 : "허용되는 표현을 찾을 수 없습니다" – StevieJ81

+0

알립니다. 이 예제는 .htm 확장자를 사용하여 dispatchservlet을 혼란스럽게 만들었 기 때문입니다. 참조 : http://stick2code.blogspot.com.au/2014/03/solved-orgspringframeworkwebhttpmediaty.html – StevieJ81

관련 문제