为了账号安全,请及时绑定邮箱和手机立即绑定

java spring项目controller中接收一个string,和一个List为入参报错,前端

java spring项目controller中接收一个string,和一个List为入参报错,前端

繁华开满天机 2019-02-27 13:19:02
只接收一个List作为入参的话不报错,下方为代码:前台:$.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);    }})后台:@ResponseBody@RequestMapping(value = "add", consumes = "application/json; charset=utf-8")public String add(@RequestBody List<Tag> param) {    System.out.println("param:" + param);    return "成功";}前台控制台显示的数据格式为:[{id: 1, name: "hello"}, {id: 2, name: "hello"}]0:{id: 1, name: "hello"}1:{id: 2, name: "hello"}那如果我后台想接受一个字符串和一个list该怎么写呢,后台代码改为:@ResponseBody@RequestMapping(value = "add", consumes = "application/json; charset=utf-8")public String add(@RequestBody String content, @RequestBody List<Tag> param) {前台应该怎么写?
查看完整描述

2 回答

?
智慧大石

TA贡献1946条经验 获得超3个赞

两种解决方案

1、

如果参数比较少 直接url?parm=value,


那么就用@RequestParam注解

2、封装成对象


    class A {

        private String parm1;

        private String parm2;

        private List<B> list;

    }


对应的前台


var data =new Object;

data.param1="value";

data.param2="value";

var  list =  new Array();

....省略list的数据初始化

data.list = list;



ajax的data

 data:JSON.stringify(data)


查看完整回答
反对 回复 2019-03-13
?
叮当猫咪

TA贡献1776条经验 获得超12个赞

@ResponseBody 接收的是前台你用 JSON 传递过来的一个整体,所以你前台需要将 String 和 List 封装在一个对象里面。


var json = {};

json['content'] = content;

json['param'] = [{id: 1, name: "hello"}, {id: 2, name: "hello"}];


// ajax data

data:JSON.stringify(json)

后台接收的话,建议是写一个对象来接收比如,


public class SomeModel {

    private String content;

    private List<Tag> param;

    // getter and setter

}

controller


@RequestMapping(value = "add", consumes = "application/json; charset=utf-8")

public String add(@RequestBody SomeModel someModel) {

    String content = someModel.getContent();

    List<Tag> param = someModel.getParam();

}

或者可以偷懒,用 Map 来接收。


查看完整回答
反对 回复 2019-03-13
  • 2 回答
  • 0 关注
  • 6314 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信