保存可能なアクション
JavaScript コールバックの getState() で SUCCESS が返される、成功したアクションが保存されます。
保存可能なアクションが送信された後、サーバから返される前に中止された場合でも、戻り値はストレージに追加されますが、アクションのコールバックはコールされません。
保存可能なアクションのアクション応答は、内部フレームワークで提供される actions というストレージに保存されます。この保存された応答は、期限切れになっていなければ、サーバ側コントローラからの応答の代わりに同じサーバ側のアクションへの後続のコールで返されます。
保存された応答が有効期限に達すると、新しい応答がサーバ側コントローラから取得され、後続のコールで actions ストレージに保存されます。
保存可能なアクションのマーク付け
サーバ側のアクションを保存可能とマークするには、JavaScript コードで次のようにアクションの setStorable()をコールします。
1a.setStorable();setStorable 関数は省略可能なパラメータを取ります。このパラメータは、ストレージオプションを表すキー - 値ペアと設定値の設定対応付けです。次のプロパティのみを設定できます。
- ignoreExisting
- true に設定すると、項目が期限切れになっているかどうかに関わらず、保存された項目が新しく取得された値で更新されます。デフォルト値は、false です。
アクション応答のストレージオプションを設定するには、この設定対応付けを setStorable に渡します。
すべての要求に対するアクション応答の更新
保存可能なアクションがサーバから動的コンテンツを返す場合、更新間隔を 0 に設定してデータがサーバから更新されるようにします。アクション応答がすでにキャッシュされている場合、サーバの往復処理中はキャッシュされた応答が表示されます。
既存の保存された応答を無視するには、次のように設定します。
1a.setStorable({
2 "ignoreExisting": "true"
3});例
この例は、setStorable() を使用してクライアント側のキャッシュにサーバ側のアクション応答を保存する方法を示しています。マークアップには、クライアント側の runActionAtServerAndStore コントローラアクションをトリガするボタンが含まれています。このクライアント側のアクションは、サーバ側の fetchDataRecord アクションをコールします。次に、アクションが保存可能とマークされて実行されます。サーバ側のアクションの戻り値は、コールバックで取得されます。
次のコンポーネントマークアップにはボタンが含まれており、アクションストレージを初期化します。
1<aura:component render="client" extensible="true"
2 controller="java://org.auraframework.impl.java.controller.AuraStorageTestController"
3 implements="auraStorage:refreshObserver">
4
5 <auraStorage:init debugLoggingEnabled="true"
6 name="actions"
7 secure="true"
8 persistent="false"
9 clearStorageOnInit="true"
10 defaultExpiration="50"
11 defaultAutoRefreshInterval="60" />
12
13 <ui:button label="Run action at Server and mark as storable"
14 press="{!c.runActionAtServerAndStore}"
15 aura:id="ForceActionAtServer"/>
16
17</aura:component>コンポーネントのクライアント側の JavaScript コントローラでのアクションを次に示します。
1runActionAtServerAndStore:function(cmp, evt, helper){
2 // Get server-side action
3 var action = cmp.get("c.fetchDataRecord");
4
5 action.setCallback(cmp, function(response){
6 var returnValue = response.getReturnValue();
7 });
8
9 // Set server-side action as storable
10 action.setStorable();
11
12 // Run server-side action
13 $A.enqueueAction(action);
14},