2016-09-29 76 views
0
@RequestMapping(value = "/save",method = RequestMethod.POST) 
@ResponseStatus(value= HttpStatus.OK) 
public void save(String str) throws IOException { 
    System.out.println(str); 
} 

所有我得到的是空:爲什麼我不能接收字符串,它是空

d

enter image description here

+0

我送一個JSON後像{「STR」:「sasfafsfafa」},但它打印空 –

+0

這是一段時間,因爲我打了Spring MVC的,但也許你需要在你的方法參數的'RequestBody'註解? http://docs.spring.io/spring/docs/current/spring-framework-reference/html/mvc.html#mvc-ann-requestbody – NilsH

+0

非常感謝您,我嘗試添加@ RequestBody,但它的打印效果類似於{「str」:「sasfafsfafa」},我只想「sasfafsfafa」 –

回答

0

你需要告訴Spring從哪裏獲取str

如果你要發送的JSON

{ "str": "sasfasfafa" } 

你需要從這個deserialises一類,並與@RequestBody註釋方法的參數。

public class StrEntity { 
    private String str; 

    public String getStr() { 
     return str; 
    } 
    public void setStr(String str) { 
     this.str = str; 
    } 
} 

public class MyController { 

    @RequestMapping(value = "/save",method = RequestMethod.POST) 
    @ResponseStatus(value= HttpStatus.OK) 
    public void save(@RequestBody StrEntity entity) throws IOException { 
     System.out.println(entity.getStr()); 
    } 
} 

如果你只是想發送的JSON文件代替(即sasfasfafa)的字符串作爲請求的身體,你可以這樣做:

public class MyController { 

    @RequestMapping(value = "/save",method = RequestMethod.POST) 
    @ResponseStatus(value= HttpStatus.OK) 
    public void save(@RequestBody String str) throws IOException { 
     System.out.println(str); 
    } 
} 

沒有辦法送JSON { "str": "sasfasfafa" }爲請求主體,並且只有一個字符串作爲控制器中的方法參數。

+0

如果我只想得到一個String參數,並通過json接收帖子,我該怎麼寫代碼和json,(對不起,我的英文很差,你能理解我的意思嗎?) –

0

使用@RequestParam註釋來獲取參數。

@RequestMapping(value = "/save",method = RequestMethod.POST) 
@ResponseStatus(value= HttpStatus.OK) 
public void save(@RequestParam(name="str") String str) throws IOException { 
    System.out.println(str); 
} 
+0

你的意思是(值= 「str」),我sen請求json {「str」:「sasfasfafa」} Httpstatu是400,並且我使用@ RestController,它與@Controller有什麼不同? –

相關問題