복붙노트

[SPRING] JSON - Spring MVC : spring MVC 컨트롤러에 json 데이터를 게시하는 방법

SPRING

JSON - Spring MVC : spring MVC 컨트롤러에 json 데이터를 게시하는 방법

jsp에서 컨트롤러로 JSON 데이터를 게시하는 데 문제가 있습니다. 시도 할 때마다 잘못된 요청 아약스 오류가 발생합니다. 임 너무 JSON 새로운 그리고 정말 내가 뭘 잘못하고 있는지 모르겠다. 나는이 사이트에서 찾을 수있는 샘플을 검색하고 시도했지만 여전히 문제가 있습니다.

내 컨트롤러 :

@RequestMapping (method = RequestMethod.POST, headers ={"Accept=application/json"}, value = "/form")
public String postJournalEntry (@RequestParam ("json") String json, Model model) {
    System.out.println(json);
    return "successfullySaved";
}

내 JSP에서 :

$("#btnPostGlEntry").click(function () {
    var glEntries = '{"glEntries":[{"generalLedgerId":"1"},{"accountId":"4"},{"amount":"344.44"},{"description":"Test Entry"},{"debit":"Yes"}]}';
    $.ajax({
        type: "POST",
        contentType: "application/json",
        dataType: "json",
        url: contextPath + "/generalLedger/journalEntries/form",
        data : JSON.stringify(glEntries),
        success: function(data) {
            alert("Success!!!");
        },
        error: function (jqXHR, textStatus, errorThrown) {
            alert(jqXHR + " : " + textStatus + " : " + errorThrown);
        }
    });
});

참고 : 내 컨트롤러의 기능이 맞는지 확실하지 않습니다. 제 컨트롤러와 아약스가 틀렸다고 생각합니다. 도와주세요.

해결법

  1. ==============================

    1.JSON을 일부 클래스로 deserialize하려면 다음과 같이 메소드를 정의해야합니다 (앞의 대답과 같이 jsonConverter를 추가하는 것을 잊지 마십시오).

    JSON을 일부 클래스로 deserialize하려면 다음과 같이 메소드를 정의해야합니다 (앞의 대답과 같이 jsonConverter를 추가하는 것을 잊지 마십시오).

    .... method(@RequestBody MyClass data){ ... }
    

    그러나 JSON을 String으로 받아들이는 메소드가 필요하다면 다음과 같이하십시오 :

    .... method(@RequestBody String json){ ... }
    

    따라서 기본적으로 JSON을 게시하면 JSON이 매개 변수가 아니라 요청의 본문임을 의미합니다. 그리고 결국 @RequestParam 대신 @RequestBody 주석을 사용해야합니다.

    Spring Mvc 및 JSON의 beautifull 비디오 자습서는 sites.google.com/site/upida4j/example에서 찾을 수 있습니다.

  2. ==============================

    2.그것은 Json 변환기가 제대로 구성되어 있지 않은 것 같습니다

    그것은 Json 변환기가 제대로 구성되어 있지 않은 것 같습니다

    이 같은

    <bean id="jacksonMessageConverter" class="org.springframework.http.converter.json.MappingJacksonHttpMessageConverter"></bean>
     <bean class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter">
    <property name="messageConverters">
      <list>
        <ref bean="jacksonMessageConverter"/>
      </list>
    </property>
    </bean>
    
  3. from https://stackoverflow.com/questions/14556330/json-spring-mvc-how-to-post-json-data-to-spring-mvc-controller by cc-by-sa and MIT license