복붙노트

[SPRING] @RequestBody가 null 값을 받고 있습니다.

SPRING

@RequestBody가 null 값을 받고 있습니다.

나는 간단한 REST 서비스 (POST)를 만들었다. 그러나 내가 우체부에서이 서비스를 호출하면 @RequestBody는 어떤 값도받지 못합니다.

import org.springframework.http.MediaType;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.servlet.ModelAndView;

@RestController
public class Add_Policy {
    @ResponseBody
    @RequestMapping(value = "/Add_Policy", headers = {
            "content-type=application/json" }, consumes = MediaType.APPLICATION_JSON_VALUE, method = RequestMethod.POST)
    public Policy GetIPCountry( @RequestBody Policy policy) {

        System.out.println("Check value: " + policy.getPolicyNumber());
        return policy;

    }


}

내 Java Bean 객체는 아래와 같습니다.

public class Policy {
    private String PolicyNumber;
    private String Type;
    private String Tenture;
    private String SDate;
    private String HName;
    private String Age;

    public String getPolicyNumber() {
        return PolicyNumber;
    }

    public void setPolicyNumber(String policyNumber) {
        PolicyNumber = policyNumber;
    }

    public String getType() {
        return Type;
    }

    public void setType(String type) {
        Type = type;
    }

    public String getTenture() {
        return Tenture;
    }

System.out.println이 PolicyNumber에 대한 값으로 null을 인쇄 중입니다.

이 문제를 해결하도록 도와주세요.

요청 본문에 전달중인 JSON이

{
    "PolicyNumber": "123",
    "Type": "Test",
    "Tenture": "10",
    "SDate": "10-July-2016",
    "HName": "Test User",
    "Age": "10"
}

나는 심지어 우편 발송자의 Content-Type을 application / json으로 설정했습니다.

해결법

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

    1.JSON의 속성 중 첫 번째 문자를 소문자로 설정하십시오. 예 :

    JSON의 속성 중 첫 번째 문자를 소문자로 설정하십시오. 예 :

    {
        "policyNumber": "123",
        "type": "Test",
        "tenture": "10",
        "sDate": "10-July-2016",
        "hName": "Test User",
        "age": "10"
    }
    

    기본적으로 Spring은 getter와 setter를 사용하여 Bean 객체의 속성을 설정합니다. 그리고 JSON 객체의 속성을 가져 와서 같은 이름의 설정자와 비교합니다. 예를 들어 policyNumber 프라퍼티를 설정하기 위해 당신은 bean 클래스에서 setpolicyNumber ()라는 이름을 가진 setter를 찾고 그것을 사용하여 bean 객체의 값을 설정하려고 시도한다.

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

    2.Java 규약에서는 POJO (클래스의 속성) 변수의 이름이 소문자의 첫 번째 문자 여야합니다.

    Java 규약에서는 POJO (클래스의 속성) 변수의 이름이 소문자의 첫 번째 문자 여야합니다.

    JSON 속성에는 대문자가 있으므로 실패의 원인이됩니다.

  3. from https://stackoverflow.com/questions/38935912/requestbody-is-getting-null-values by cc-by-sa and MIT license