0

1回のトランザクションで1対多のフォームを作成しています。レコードを完全に作成する必要があるか、まったく作成しない必要があります。データの 1 つが要件を満たさない場合にすべての操作をロールバックするために、Java を使用してバック コードを実装しました。インターフェイスはextjsを使用しており、JacksonとのRESTインターフェイスがあります。

問題は、ExtJS 4 がすべての詳細レコードと一緒に特定のフォームですべてを URL に送信するための最良の方法は? 私が何をしたにも関わらず、Ext.Store はデータを 1 つずつ送信しているようです。

簡単に言えば、アプリケーション/json コンテンツを含む生の状態で、このようなものを POST する Ext.Store が必要です。

{
    id: '',
    パーティー: 3,
    マシン: 'x1',
    製品: 'pr001',
    ランタイム: 12,
    材料: [{
        アイテム: 'rm001',
        数量: '39.01',
        整列: '9.930'
    }、{
        アイテム: 'rm002',
        数量: '20.03',
        整列: '9.0234'
    }]
}

問題は、子ストアが常に入力時にデータを送信することです。autoSync を false に設定しても、親ストアを介してすべてを一度に送信するのではなく、1 つずつ送信します。

サンプルコードはありますか?

ありがとうございました

4

1 に答える 1

0

私がそれを行う方法はxmlを使用することですが、アイデアは同じである必要があります。親ストアにシリアル化関数が含まれていると、次のようになります

serialize: function(){
     var store = this;
     var xml = [];
     store.each(function(record){
        xml.push('id:'+record.get(id))
        xml.push('party:'+record.get(party))
        record.materials().each(function(materials_rec){
           xml.push('item:'+materials_rec.get(item));
            ...                 
        });
     });
     return xml.join('');
}

そのため、コントローラーからこの関数を呼び出し、親ストアと子ストアのすべてのレコードを含む ajax リクエストを送信します

于 2013-06-28T20:30:24.267 に答える