【发布时间】:2015-03-27 09:25:02
【问题描述】:
我正在尝试在Java 中创建一个接受两个列表作为FormData 参数的网络服务。
我使用了 this answer 中提到的 Angualr JS http 服务。
var queryRequest = $http({
method:'POST',
url:'services/test/testPath',
data:$.param({"listA":myList1,"listB":myList2}),
headers: {'Content-Type': 'application/x-www-form-urlencoded;charset=UTF-8'}
});
我的对象myList1
var myList1=[];
var obj={};
obj["val1"]=1
obj["val2"]=2
myList1.push(obj);
我的对象myList2
var myList2=[];
var obj={};
obj["val11"]=3
obj["val12"]=4
myList2.push(obj);
var obj={};
obj["val11"]=5
obj["val12"]=6
myList2.push(obj);
我正在使用javax.ws.rs.* 进行其余服务
而我接受数据的 Java 服务器端点是 -
@Path("testPath")
@POST
@Consumes("application/x-www-form-urlencoded;charset=UTF-8")
@Produces("application/json")
public DataDTO addIssuancesForFP(@FormParam("listA") List<TypeA> list1, @FormParam("listB") List<TypeB> list2) {
System.out.println("Service is called correctly");
return service.getDTO(list1,list2);
}
我的班级'TypeA'
private Integer val1;
private Integer val2;
//getters and setters, and default constructor
我的班级'TypeB'
private Integer val11;
private Integer val12;
//getters and setters, and default constructor
端点正确命中,但我在两个列表中都得到了null。请求结构为:
请求类型
Accept:application/json, text/plain, */*
Content-Type:application/x-www-form-urlencoded;charset=UTF-8
表单数据
listA[0][val1]:1
listA[0][val2]:2
listB[0][val11]:3
listB[0][val12]:4
listB[1][val11]:5
listB[1][val12]:6
这似乎是正确的,我认为错误是在服务器部分。如何解决?
谢谢
注意:这只是模拟数据,格式完全相同
【问题讨论】:
-
表单数据还是来自数据??
-
@roxid 更改为
form data -
JavaScript 对象上的
[val1]等属性也是如此吗?这就是数据实际发送的方式,即listA[0][val1]=value1?你能显示myList1和myList2的实际Javascript 对象吗?还可以显示TypeA和TypeB类。 -
好的,我现在就去看看
-
我没有看到您的完整更新。它显示了我认为可用的对象。我只是想看看实际的请求,看看数据是如何发送的
标签: java angularjs http-post jax-rs