2013-10-11 50 views
1

使用接受JSON請求主體的Spring MVC開發REST Web服務。 並進一步處理收到的消息。 蔭使用下列內容: 的Eclipse,Tomcat的,春天3.0.1,傑克遜lib下,捲曲用於測試Web服務使用Spring MVC的REST webservice在發佈JSON時返回null


    `curl -i -H "Content-Type: application/json" -H "Accept: application/json" -X POST -d '{"fname":"my_firstname" , "lname":"my_lastname"}' http://localhost:8080/SpringMVC/restful`

返回

"Saved person: null null"

我的控制器類



     import com.samples.spring.Person; 

    @Controller 
    public class RestController { 

    @RequestMapping(value="{person}", method = RequestMethod.POST) 
    @ResponseBody 
     public String savePerson(Person person) { 
      // save person in database 
      return "Saved person: " + person.getFname() +" "+ person.getLname(); 
     } 

我人類




     package com.samples.spring; 

    public class Person { 

     public String fname; 
     public String lname; 

     public String getFname() { 
      return fname; 
     } 
     public void setFname(String fname) { 
      this.fname = fname; 
     } 
     public String getLname() { 
      return lname; 
     } 
     public void setLname(String lname) { 
      this.lname = lname; 
     } 
    } 

+0

解決。做了兩件事情如下:1)增加了@RequestBody 2)改變了Curl的JSON參數從-d'{「fname」:「my_firstname」,「lname」:「my_lastname」}'---- -d「{ 「」「fname」「」:「」「my_firstname」「」「,」「」lname「」「:」「」my_lastname「」「}」。任何人都可以解釋嗎? – user2870419

回答

5

嘗試添加@RequestBody

@RequestMapping(value="{person}", method = RequestMethod.POST) 
@ResponseBody 
    public String savePerson(@RequestBody Person person) { 
     // save person in database 
     return "Saved person: " + person.getFname() +" "+ person.getLname(); 
    } 
0

嘗試添加一個構造你的Person類:

public Person(String fname, String lname) { 
    this.fname = fname; 
    this.lname = lname; 
}