2016-06-22 6 views
0

で処理されていない。アレイは私はジャージーを使用して実装以下の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配列が空であると思われます.IterListを反復しようとすると、IldListは空になりますので、メソッドPOSTは動作しますが、常に空のリストが返されます。

"url?ruleid = a & workgroupid = b"の形式では使用できないことは知っています。私が好奇心で試したところ、QueryParamExceptionとNumberFormatExceptionがあり、ルール配列が文字列として扱われていると言われました。

両方のパラメータに「Ext.encode」を使用すると、最大コールスタックサイズを超えたというメッセージがブラウザコンソールに表示されます。

これは、私はクロームコンソールから得たものである:

enter image description here

私はほとんどすべてを試みましたが、おそらくいくつかのより多くの目が、この中で私を助けることができる、私はコメントや、あらゆる種類のを本当に感謝します助けて。

ありがとうございます。

答えて

2

パラメータが、クエリパラメータとしてではなく、POST本体にあるように見えます。

url?ruleid = a & ruleIdがIntegerであるため、workgroupid = bがNumberFormatExceptionを取得しています。

URL?ruleid = 1 & workgroupid = BまたはURL?ruleid = 1 & ruleid = 2 & workgroupid = bが、私はExtJSには "のparams" 設定を通じて、いくつかの機構Oハンドルクエリのparamsを持っていると考え

+0

動作するはずです。私はアプリケーションでいくつかのコードを見て、 "params"設定がメソッドがGETのときにいくつかの開発者によって使用されていることを認識しました。 POSTに関しては、あなたが提案してうまくいったように私はそれをやった。配列が大きい可能性がありますので、それを処理する別の方法を要求する必要があります。非常に広範囲なURLは必要ありません。ありがとう! –

関連する問題