为什么我无法接收字符串并且它为空

时间:2016-09-29 07:30:18

标签: spring-mvc

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

我得到的只是null:

d

enter image description here

2 个答案:

答案 0 :(得分:0)

你需要告诉Spring从哪里获得str

如果您要发送JSON

{ "str": "sasfasfafa" }

您需要一个从此反序列化的类,并使用@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());
    }
}

如果您只想发送一个字符串作为请求正文(即sasfasfafa)而不是JSON文档,您可以这样做:

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" }作为请求主体发送,并且只有一个String作为控制器中的方法参数。

答案 1 :(得分: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);
}