簡単な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
郵便配達員
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オブジェクトの値を設定しようとします。
Javaの規則では、POJO(クラスの属性)の変数名は小文字の最初の文字である必要があります。
JSONプロパティに大文字があり、これが失敗の原因です。