web-dev-qa-db-fra.com

@RequestBody obtient des valeurs nulles

J'ai créé un simple service REST (POST). Mais lorsque j'appelle ce service depuis le facteur @RequestBody, il ne reçoit aucune valeur.

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;

    }


}

Mon Java objet Bean est comme ci-dessous:

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 imprime un null en tant que valeur pour PolicyNumber.

Veuillez m'aider à résoudre ce problème.

JSON que je passe dans le corps de la demande est

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

J'ai même mis Content-Type à application/json dans facteur

19
Geek

Essayez de définir le premier caractère des propriétés de votre JSON en minuscules. Par exemple.

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

Fondamentalement, Spring utilise getter et setter pour définir les propriétés de l'objet bean. Et il prend la propriété de l'objet JSON, le fait correspondre avec le setter du même nom. Par exemple, pour définir la propriété policyNumber, il essaie de trouver un setter avec le nom setpolicyNumber () dans votre classe de bean et l'utiliser pour définir la valeur de votre objet bean.

26
AmanSinghal

La convention Java exige que le nom de la variable dans un POJO (attribut d'une classe) soit le premier caractère en minuscule.

Vous avez des lettres majuscules dans vos propriétés JSON, ce qui est à l'origine de l'échec.

2
Adriano Dib