0

Alfresco 3.2エンタープライズでExtjs 2.2.1を使用しています。

ログイン中にロードされたコンポーネントで、外部サーバーへの認証を処理するチケットを更新したいと考えています。このチケットは一定時間後に失効するため、チケットを更新する必要があります。

私にとって実行可能とは思えないオプション(ただし、間違っている場合はお知らせください):

  1. コンポーネントをリロードして呼び出しパラメータをリロードします - ユーザーが以前に作業していたものをリセットするため、これを行うことはできません (つまり、ツリー パネルがリロードされ、グリッド フィルタがリセットされるなど)。すべてが ajax 呼び出しを使用してページ上の内容を更新するため、実際の Web ページがリロードされることはありません。

  2. チケットを格納するグローバル変数を作成し、それを ajax 呼び出しの呼び出しパラメーターとしてアタッチします。ログイン中に読み込まれたコンポーネントは、元のチケットを使用してサーバーを呼び出します。

4

1 に答える 1

0

このようなことを試してください

Ext.onReady(function() {
  var token = new Ext.util.MixedCollection();
  token.add('id', 'THE_TOKEN_ID');
  Ext.ComponentMgr.register('token', token);
});

MixedCollectionトークンに関係するすべてのコンポーネントを更新するイベント リスナーを にアタッチします。

// now you need all the event listeners
var token = Ext.getCmp('token');
var component = Ext.getCmp('some_component_that_needs_ajax');
token.on('replace', function(key, value, original) {
  if(key == 'id') {
    component.params.token_id = value; // update the new value
  }
});

トークンの更新が必要なときはいつでも

var token = Ext.getCmp('token');
token.replace('id', 'THE_NEW_TOKEN_ID');

ここで起こっていることは次のとおりです。

  1. を作成しMixedCollectionて、トークンに関する情報を含めます。
  2. 新しいトークンがあるときに更新が必要なコンポーネントは、replaceトークンのリスナーのハンドラーで更新する必要がありますMixedCollection
  3. 新しいトークン ID を取得したら、 を使用して新しいトークン ID でキーMixedCollection.replaceを更新します。id
  4. replaceハンドラーが起動し、すべての依存コンポーネントを更新するリスナーが起動します。
于 2010-07-12T04:49:11.517 に答える