2016-06-22 4 views
0
처리되지 않는

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"를 사용하면 최대 콜 스택 크기가 초과되었다는 메시지가 브라우저 콘솔에 나타납니다.

내가 크롬 콘솔에서 가져온 것입니다 :

enter image description here

나는 거의 모든 노력을했지만, 어쩌면 좀 더 눈이 나를 도울 수있다, 난 정말 의견이나 어떤 종류의 감사하겠습니다 도움.

미리 감사드립니다.

답변

2

매개 변수가 쿼리 매개 변수 대신 POST 본문에있는 것처럼 보입니다.

url? ruleid = a & ruleId가 정수로되어 있기 때문에 workgroupid = b는 NumberFormatException이 발생합니다.

URL? ruleid = 1 & workgroupid = B 또는 URL? ruleid = 1 & ruleid = 2 & workgroupid = b는 내가 ExtJS로는 "PARAMS"설정을 통해 몇 가지 메커니즘 오 핸들 검색어 매개 변수를 가지고 있다고 생각

+0

작동합니다. 응용 프로그램에서 일부 코드를 살펴본 후 메서드가 GET 일 때 "dev"에서 "params"구성을 사용한다는 것을 알았습니다. POST를 위해, 당신이 제안하고 잘 작동했을 때 그것을했습니다. 배열이 커질 수 있으므로이를 처리하기 위해 다른 방법을 요청해야 할 수도 있습니다. 매우 광범위한 URL은 필요하지 않습니다. 감사! –