在线观看不卡亚洲电影_亚洲妓女99综合网_91青青青亚洲娱乐在线观看_日韩无码高清综合久久

鍍金池/ 問答/Java  HTML/ java后臺controller接收一個list入?yún)⒉粓箦e,但是接收一個stri

java后臺controller接收一個list入?yún)⒉粓箦e,但是接收一個string和一個list就報錯,該怎么解決?

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

@ResponseBody

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

前臺:
$.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);
    }
})

如果我只接收一個list是正常的:
后臺代碼:
@ResponseBody

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

前臺代碼:
$.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);
    }
})

正常

回答
編輯回答
別硬撐

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

比如:

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