鍍金池/ 問答/Java  HTML/ java后臺(tái)controller接收一個(gè)list入?yún)⒉粓?bào)錯(cuò),但是接收一個(gè)stri

java后臺(tái)controller接收一個(gè)list入?yún)⒉粓?bào)錯(cuò),但是接收一個(gè)string和一個(gè)list就報(bào)錯(cuò),該怎么解決?

不考慮再添加一個(gè)封裝類,
后臺(tái)代碼就只能這樣,唯一的改變可以更改入?yún)⒌奈恢?,還有入?yún)⑸系淖⒔?,和方法上的注解,前臺(tái)應(yīng)該怎么寫?

@ResponseBody

@RequestMapping(value = "add", consumes = "application/json; charset=utf-8")
public String add(@RequestBody String content, @RequestBody List<Tag> param) {

前臺(tái):
$.ajax({

    type:"post",
    url: 'add',
    contentType:"application/json; charset=utf-8",
    dataType:"json",
    data:JSON.stringify({
            content:"nihaoahaha",
            param:[{id:1,name:"hello"},{id:2,name:"hello"}]
    }),
    success:function(data){
        console.log(data);
    }
})

如果我只接收一個(gè)list是正常的:
后臺(tái)代碼:
@ResponseBody

@RequestMapping(value = "add", consumes = "application/json; charset=utf-8")
public String add(@RequestBody List<Tag> param) {
    System.out.println("param:" + param);
    return "成功";
}

前臺(tái)代碼:
$.ajax({

    type:"post",
    url: 'add',
    contentType:"application/json; charset=utf-8",
    dataType:"json",
    data:JSON.stringify([{id:1,name:"hello"},{id:2,name:"hello"}]),
    success:function(data){
        console.log(data);
    }
})

正常

回答
編輯回答
別硬撐

如果是單個(gè)參數(shù)用@RequestParam注解,一個(gè)對(duì)象或者集合就用 @RequestBody,
但是不建議@RequestBody和@RequestParam一起用,
你可以把content封裝到Tag對(duì)象里面加個(gè)非表字段注解@TableField(exist = false),
這樣傳參就只需要把參數(shù)都丟到Tag對(duì)象里,前后臺(tái)都方便,就容易多了。

比如:

Public class Tag{

private String 參數(shù)1;
private String 參數(shù)2;

@TableField(exist = false)//非表字段注解,不干涉數(shù)據(jù)庫操作
private String content;

getter..setter...
....

}

2017年10月13日 05:14
編輯回答
旖襯

目前得知的答案是沒有辦法解決,必須使用封裝類,或者解析字符串

2017年5月10日 10:16