繁体   English   中英

将数组从javascript发送到Spring Controller

[英]Send array from javascript to Spring Controller

我有一个javascript函数,发布到控制器API。 这是代码:

exports.importList = function (req, res) {
res.setHeader('Content-Type', 'application/json');
var agencyId = req.user.agency_id;
var userId = req.user.id;
 data = {
id_list: req.body.ids,
remoteHost:'127.0.0.1',
userId : userId,
agencyId:agencyId
};

call = '/ilist/importer/list/'; //Spring route

fetcher.post(call, 'post', data, function (err, result) {
    console.log(data);
})
}

req.body.ids是一个字符串值数组,因此我想发送给Controller的数据具有以下结构:

{ id_list: [ '2147041', '2155271' ], 
  remoteHost: '127.0.0.1', 
  userId: 'user', 
  agencyId: 1 }

我的控制器方法:

@RequestMapping(value="/list/", method = RequestMethod.POST, headers = "Accept=application/json")
public @ResponseBody RemaxResponse importPropertyList(@RequestBody ArrayList<String> data )  {

    List<Long> ids = new ArrayList<>();
    for (String id : data.id_list) {
        ids.add(Long.valueOf(id));
   }

       response = ilistIImporterService.importPropertyList(ids);
    return response;
}

我需要在Controller中接收字符串数组并将其存储在整数数组中,其他参数存储在整数变量中。 现在,我发现我从javascript发送的数据是不正确的。 这样做的正确方法是什么?

如果你想发送整个对象,我会创建一个pojo并将其用作@RequestBody

public @ResponseBody RemaxResponse importPropertyList(@RequestBody RequestObject data )  {

现在spring可以很好地将整个数据解析为给定的pojo,您可以简单地使用getters来获取所需的数据。

pojo可能看起来像

public class RequestObject {
    private List<Long> idList = null;
    private String remoteHost;
    private String userId;
    private Integer agencyId;

    public List<Long> getIdList() {
        return idList;
    }

    public void setIdList(List<Long> idList) {
        this.idList = idList;
    }

    public String getRemoteHost() {
        return remoteHost;
    }

    public void setRemoteHost(String remoteHost) {
        this.remoteHost = remoteHost;
    }

    public String getUserId() {
        return userId;
    }

    public void setUserId(String userId) {
        this.userId = userId;
    }

    public Integer getAgencyId() {
        return agencyId;
    }

    public void setAgencyId(Integer agencyId) {
        this.agencyId = agencyId;
    }
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM