鍍金池/ 問答/人工智能  Java  HTML/ post請(qǐng)求springMVC后臺(tái),只傳一個(gè)參數(shù),后臺(tái)用一個(gè)字符串接受,參數(shù)名對(duì)

post請(qǐng)求springMVC后臺(tái),只傳一個(gè)參數(shù),后臺(tái)用一個(gè)字符串接受,參數(shù)名對(duì)應(yīng),但入?yún)s為null,求講解和解決,謝謝

如果在參數(shù)前面加上@requestBody 接受的就是個(gè)json串

前臺(tái)代碼:

shuoAdd() {
    axios.post('/shuo/add', {
            content: this.shuo //瞎打的內(nèi)容是:法撒旦發(fā)射點(diǎn)
        }
    ).then(function (response) {
        console.log(response.data)
        // window.history.back(-1)
    })
}

前臺(tái)請(qǐng)求數(shù)據(jù):
{"content":"法撒旦發(fā)射點(diǎn)"}

后臺(tái)代碼---1:

@RestController
@RequestMapping("shuo")
public class ShuoControllerPost {
    @PostMapping("add")
    public String add(String content) {
        System.out.println(content);
        return "保存成功";
    }
}

后臺(tái)這樣寫的話接收到的是null;

后臺(tái)代碼---2 加上@RequestBody注解:

@RestController
@RequestMapping("shuo")
public class ShuoControllerPost {
    @PostMapping("add")
    public String add(@RequestBody String content) {
        System.out.println(content);
        return "保存成功";
    }
}

這樣寫的話打印content就是 {"content":"法撒旦發(fā)射點(diǎn)"} 一個(gè)json串

我就只想接收到 法撒旦發(fā)射點(diǎn) 這個(gè)字符串就行

謝謝各位

回答
編輯回答
女流氓

axios默認(rèn)是payload方式提交數(shù)據(jù),springmvc需要一個(gè)對(duì)象注入。

@RequestMapping("shuo")
public class ShuoControllerPost {
    @PostMapping("add")
    public String add(@RequestBody QueryData data) {
        System.out.println(data.getContent());
        return "保存成功";
    }
}
//封裝對(duì)象
public class QueryData {
    private String content;

    public String getContent() {
        return content;
    }

    public void setContent(String content) {
        this.content = content;
    }
}
2018年6月12日 12:51
編輯回答
誮惜顏

axios默認(rèn)是payload方式提交數(shù)據(jù),需要按照以下步驟修改就可以了:
1.加入配置:axios.defaults.headers.post['Content-Type'] = 'application/x-www-form-urlencoded'
2.引入:import Qs from 'qs'
3.post請(qǐng)求中,需要將數(shù)據(jù)序列化:data: Qs.stringify(params)

2017年3月23日 00:51
編輯回答
好難瘦

你看看是不是this的問題。Ajax中的this不是外部函數(shù)的this。

2018年9月8日 18:09
編輯回答
風(fēng)清揚(yáng)

使用瀏覽器開發(fā)者工具看一下,Content-Type和form Data是什么?

2017年8月11日 17:42
編輯回答
亮瞎她

關(guān)于axios的這個(gè)問題網(wǎng)上有很多講解,因?yàn)樗]有默認(rèn)的替你去處理數(shù)據(jù)。你可以看network控制面板發(fā)送的請(qǐng)求,過去的并不是一個(gè)key:value的形式??梢酝ㄟ^自己處理如$.param

jQuery的ajax為什么有?那是因?yàn)閖Query本來的目的就是為了方便的一個(gè)庫。

2017年9月20日 16:19
編輯回答
絯孑氣

最簡(jiǎn)單的方法就是自定義一個(gè)實(shí)體,然后對(duì)象名是content,直接取值就行了。

2018年9月11日 13:20
編輯回答
帥到炸

沒有使用過axios,單純的從ajax請(qǐng)求的角度來回答一下這個(gè)問題。

現(xiàn)在看來你是能訪問到這個(gè)方法的,說明URL是正確的。那么:
1.是否和請(qǐng)求的content-type有關(guān)?
2.是否需要使用JSON.stringfy方法?

這里你上傳的數(shù)據(jù)類型是form的話,可以試試看將注解改為@RequestParam
如果上傳的數(shù)據(jù)格式為json的話,需要適當(dāng)?shù)呐渲孟㈩^的屬性

https://my.oschina.net/anxiao...
不知道這篇文章是不是你需要的。

2018年4月18日 11:51
編輯回答
朕略傻

設(shè)置請(qǐng)求頭 content-type為application/x-www-form-urlencoded
headers: {

   'Content-Type': 'application/x-www-form-urlencoded'

}
var params = {
content: this.shuo
}
把你傳遞值轉(zhuǎn)換為字符串 JSON.stringify(params)

axios.post('url',JSON.stringify(params),{
      headers: {
            'Content-Type': 'application/x-www-form-urlencoded'
       }
  })
    .then(function(res){
              
     }.bind(this))
     .catch(function(err){
      console.log(err)
  })
2017年3月13日 10:46