web-dev-qa-db-ja.com

@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;

    }


}

My 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郵便配達員

19
Geek

JSONのプロパティの最初の文字を小文字に設定してみてください。例えば。

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

基本的に、Springはgetterとsetterを使用してBeanオブジェクトのプロパティを設定します。そして、JSONオブジェクトのプロパティを取得し、同じ名前のセッターと一致させます。たとえば、policyNumberプロパティを設定するには、BeanクラスでsetpolicyNumber()という名前のセッターを見つけ、それを使用してBeanオブジェクトの値を設定しようとします。

26
AmanSinghal

Javaの規則では、POJO(クラスの属性)の変数名は小文字の最初の文字である必要があります。

JSONプロパティに大文字があり、これが失敗の原因です。

2
Adriano Dib