[英]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.