猿问

post请求springMVC后台,只传一个参数,后台用一个字符串接受,参数名对应,但入参却为nul

如果在参数前面加上@requestBody 接受的就是个json串


前台代码:


shuoAdd() {

    axios.post('/shuo/add', {

            content: this.shuo //瞎打的内容是:法撒旦发射点

        }

    ).then(function (response) {

        console.log(response.data)

        // window.history.back(-1)

    })

}

前台请求数据:

{"content":"法撒旦发射点"}


后台代码---1:


@RestController

@RequestMapping("shuo")

public class ShuoControllerPost {

    @PostMapping("add")

    public String add(String content) {

        System.out.println(content);

        return "保存成功";

    }

}

后台这样写的话接收到的是null;


后台代码---2 加上@RequestBody注解:


@RestController

@RequestMapping("shuo")

public class ShuoControllerPost {

    @PostMapping("add")

    public String add(@RequestBody String content) {

        System.out.println(content);

        return "保存成功";

    }

}

这样写的话打印content就是 {"content":"法撒旦发射点"} 一个json串


我就只想接收到 法撒旦发射点 这个字符串就行


谢谢各位


慕神8447489
浏览 14402回答 8
8回答

眼眸繁星

最简单的方法就是自定义一个实体,然后对象名是content,直接取值就行了。

海绵宝宝撒

使用浏览器开发者工具看一下,Content-Type和form Data是什么?

RISEBY

你看看是不是this的问题。Ajax中的this不是外部函数的this。

ITMISS

关于axios的这个问题网上有很多讲解,因为它并没有默认的替你去处理数据。你可以看network控制面板发送的请求,过去的并不是一个key:value的形式。可以通过自己处理如$.paramjQuery的ajax为什么有?那是因为jQuery本来的目的就是为了方便的一个库。

繁星淼淼

axios默认是payload方式提交数据,springmvc需要一个对象注入。@RequestMapping("shuo")public class ShuoControllerPost {    @PostMapping("add")    public String add(@RequestBody QueryData data) {        System.out.println(data.getContent());        return "保存成功";    }}//封装对象public class QueryData {    private String content;    public String getContent() {        return content;    }    public void setContent(String content) {        this.content = content;    }}
随时随地看视频慕课网APP

相关分类

JavaScript
我要回答