Wicket に
Ajax 関連機能 の
参考
以下、
AjaxChannel (Wicket Parent 6.30.0-SNAPSHOT API)
Wicket のJAVADOC に AjaxChanel に ついての 記載が あります。 Java Code Examples org.apache.wicket.ajax.AjaxChannel
AjaxChannel の使用例
AjaxChannel 設定値に ついて
以下、
queueing
Ajax リクエストが、クライアント側の キューに 保持されます。 キューに 格納された データは、 一度に 1 つずつ 処理されます。
デフォルト動作です。drop
最後のAjax リクエストのみが 処理され、 その前の リクエストは すべて 破棄されます。 active
実行中のAjax リクエストが ある 場合、 先勝ちに なります。
Ajax を 並列で 動作させる 場合
実行したかった
同一の<wbr>Channel だと、<wbr>AjaxChannel の<wbr>動作で、<wbr>シリアル実行される<wbr>
ので、Channel 名を<wbr>変えると、<wbr>AjaxChannel の<wbr>設定に<wbr>寄らず、<wbr>並列実行される<wbr>
に
以下、
AjaxRequestAttributes
に
AjaxChannel Examples
// firstLink とは、別のChannelになるので、Blockされない。 AjaxLink previousLink = new AjaxLink(ID_PREVIOUS_LINK) { @Override protected void updateAjaxAttributes(AjaxRequestAttributes attributes) { attributes.setChannel(new AjaxChannel("blocking", AjaxChannel.Type.ACTIVE)); } @Override public void onClick(AjaxRequestTarget target) { previousPerformed(target); } }; // previousLink とは、別のChannelになるので、Blockされない。 AjaxLink firstLink = new AjaxLink(ID_FIRST_LINK) { @Override protected void updateAjaxAttributes(AjaxRequestAttributes attributes) { attributes.setChannel(new AjaxChannel("queueing", AjaxChannel.Type.QUEUE)); } @Override public void onClick(AjaxRequestTarget target) { firstPerformed(target); } };
使う
際の 考慮事項
AjaxChannel は、Channel (キュー) の 指定と、 Channel の 動作の 制御が できます。
使い方のポイントと して 以下が あるかと 思いますので 記載します。 Chnannel の
単位は 設計する。
Ajax コンポーネントは、種類に よって、 どの Channel を 使用するか、 Channel の 振る 舞いは どうすべきかは 設計必要に 思いました。 1つの
Channel で、 協調させる。
これは試してないので、 もしかしたらうまく 動かない 可能性が ありますが、 複数の ボタンを 同じChannel に して、 振る 舞いを 制御する ことも 可能なのかなと 思いました。 単純な
連打防止
連打制御という 意味だと、 DROP 、 もしくは、 ACTIVE に して おくのが よいかと 思いました。
時間がかかる 処理だと、 ACTIVE ですぐに 完了する 処理だと、 DROPでしょうか。
以上です。
コメント