I가 I 저지하여 구현 다음 Java REST 방법 :배열 POST
@POST
@Path("copy")
public List<Integer> copyCompanionTextRule(@QueryParam("ruleid") List<Integer> ruleIdList,
@QueryParam("workgroupid") List<WorkgroupId> workgroupIds,
@Context HttpHeaders hh)
throws ETMSException
{
List<Integer> insertedItems = new ArrayList<Integer>();
if (null != ruleIdList){
for(Integer ruleId : ruleIdList) {
insertedItems.addAll(copyCompanionTextRule(ruleId, workgroupIds));
}
}
return insertedItems;
}
그것은 문맥뿐만 아니라 WorkgroupId 정수의 목록 및 형식의 오브젝트들의리스트를 수신한다 추가 처리를 위해 나중에하겠습니다.
내가 엽차는 ExtJS 4.2 클라이언트를 일하고 있어요 및 내 요청이 방법을 실행 중입니다 : [1274,1292,1745] :
Ext.Ajax.request({
url: '/sysadmin/companiontextrules/copy',
method: 'POST',
showException: true,
scope: this,
params: {
ruleid: Ext.encode(ruleIdsArray),
workgroupid: toWorkgroups
},
callback: function(options, success, response) {
me.setLoading(false);
if (!success) {
return;
}
this.destroy();
}
});
을 ruleIdsArray 정수 단지 배열입니다. toWorkgroups는 WorkgroupId 엔터티와 관련된 모델을 가진 개체의 배열입니다.
아시다시피 두 목록 모두 쿼리 매개 변수로 처리되고 있으며 Ajax 요청에서 "params"구성을 사용하고 있습니다. 그러나 이것은 작동하지 않습니다.
rulesId 배열이 비어있는 것처럼 보입니다. 규칙을 반복하려고하면 IldList가 비어있어 POST 메서드가 작동하지만 항상 빈 목록을 반환합니다.
"url? ruleid = a & workgroupid = b"형식으로 사용할 수 없다는 것을 알고 있습니다. 내가 호기심에 의해서만 시도했을 때, QueryParamException과 NumberFormatException을 얻었습니다. 규칙 배열이 문자열로 간주됩니다.
두 개의 매개 변수 모두에 "Ext.encode"를 사용하면 최대 콜 스택 크기가 초과되었다는 메시지가 브라우저 콘솔에 나타납니다.
이
내가 크롬 콘솔에서 가져온 것입니다 :나는 거의 모든 노력을했지만, 어쩌면 좀 더 눈이 나를 도울 수있다, 난 정말 의견이나 어떤 종류의 감사하겠습니다 도움.
미리 감사드립니다.
작동합니다. 응용 프로그램에서 일부 코드를 살펴본 후 메서드가 GET 일 때 "dev"에서 "params"구성을 사용한다는 것을 알았습니다. POST를 위해, 당신이 제안하고 잘 작동했을 때 그것을했습니다. 배열이 커질 수 있으므로이를 처리하기 위해 다른 방법을 요청해야 할 수도 있습니다. 매우 광범위한 URL은 필요하지 않습니다. 감사! –