9 votes

@RequestBody reçoit des valeurs nulles.

J'ai créé un service REST simple (POST). Mais lorsque j'appelle ce service depuis postman, @RequestBody 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 objet java 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 comme valeur pour PolicyNumber.

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

JSON que je passe dans le corps de la requête 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 en facteur

16voto

AmanSinghal Points 958

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

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

Fondamentalement, Spring utilise des getter et setter pour définir les propriétés de l'objet bean. Il prend la propriété de l'objet JSON, la 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 bean et l'utilise pour définir la valeur de votre objet bean.

1voto

Adriano Dib Points 14

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 la cause de l'échec.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X