2013-12-11 3 views
3

안녕하세요, 저는이 모든 것이 여기있는 첫 번째 질문입니다. 지금 당장이 문제를 해결할 수 있기를 바랍니다.Spring @RequestBody : 클라이언트가 보낸 요청의 구문이 올바르지 않음

JQuery를 사용하여 JSON 객체를 Spring Controller로 보내고 싶습니다.

{"ssoArray":["21212", "231341"], "groupArray":["g10002", "g10003"]} 

을하지만 오류 메시지를 받았습니다 : 클라이언트가 보낸 요청이 문법적으로 정확

내 환경 :

  • 봄 다음과 같이 JSON 개체의 형식은 3.0.6
  • jackson 1.9.13
  • JBoss 4.2

JQuery와 코드 : 업데이트 : 추가 AJAX 호출을

function addRemoveAdmin(action, ssoArray, groupArray) { 
    var uri = actionPath + "/"; 
    var jsonParameter = {"ssoArray":ssoArray, "groupArray":groupArray}; 

    if(action == "add") { 
     uri = uri + addAdminAction; 
    } else { 
     uri = uri + removeAdminAction; 
    }    

    console.log(typeof jsonParameter); 

    $.ajax({ 
     url:uri, 
     type:"POST", 
     data:jsonParameter, 
     contentType:"application/json; charset=utf-8", 
     dataType:"json", 
     success: function(){ 
      alert(data); 
     } 
    }); 
} 

컨트롤러 코드를 만드는 자바 스크립트 메소드의 전체 코드 :

@RequestMapping(value = "/addAdmin", method = RequestMethod.POST) 
public String addAdmin(@RequestBody final AdminAndGroup personsAndGroups) throws Exception { 
    LOGGER.info("[RequestController] - addAdmin start"); 

    LOGGER.info(personsAndGroups.toString()); 

    return "OK"; 
} 

매핑 클래스 :

public class AdminAndGroup implements Serializable { 

private static final long serialVersionUID = 9024455757311860269L; 

private List<String> ssoArray; 
private List<String> groupArray; 

public AdminAndGroup(){} 

public List<String> getSsoArray() { 
    return ssoArray; 
} 
public void setSsoArray(List<String> ssoArray) { 
    this.ssoArray = ssoArray; 
} 
public List<String> getGroupArray() { 
    return groupArray; 
} 
public void setGroupArray(List<String> groupArray) { 
    this.groupArray = groupArray; 
} 

@Override 
public String toString() { 
    return "AdminAndGroup [ssoArray=" + ssoArray + ", groupArray=" 
      + groupArray + "]"; 
} 

}

java.util.List를 사용하여 JSON 객체 내부에있는 배열을 매핑했지만이 방법으로 문제를 해결할 수 있는지 확실하지 않습니다.

또한 스택 오버플로를 검색했으며 JSON 개체 내부에 배열을 매핑하는 방법에 대한 예제를 찾지 못했습니다.

미리 감사드립니다.

+0

은 문자열이거나 jsonParameter 객체입니다. 'console.log (typeof jsonParameter)' –

+0

@KevinB 객체입니다. 전체 자바 스크립트 메소드를 표시하는 질문을 업데이트했습니다. 감사. – FJSNorman

답변

3

json을 보내려면 개체를 json으로 변환해야합니다. 그렇지 않으면 jQuery는이를 매개 변수 문자열로 변환합니다.

data: JSON.stringify(jsonParameter) 
+0

고마워,이 문제가 해결되었습니다 :) – FJSNorman

관련 문제