Masaya seko
masay****@nifty*****
2012年 1月 17日 (火) 20:40:41 JST
お疲れ様です。世古です。 矢野さん、青山さん、返信ありがとうございます。 「二重サブミット問題」と「二重クリック問題」は分けて考えるべきだったのですね。 Wicketが具体的に何に強いのかわかり、すっきりしました。 ありがとうございます。 >矢野さん Wicketがリクエストを直列に処理する性質をこんな所に生かすことが出来るとは、びっ くりです。 しかも、この作りなら使い回し簡単ですし。 Wicketは奥が深い…。 >青山さん AjaxPostprocessingCallDecoratorというクラスの存在を知らなかったです。 こんな拡張ポイントが存在したとは。 Formにボタンが1個というケースでは、これはお手軽ですね。 勉強になりました。 以上 ----- Original Message ----- >Date: Tue, 17 Jan 2012 09:52:46 +0900 >From: Yoshikazu Aoyama <yskz.****@gmail*****> >To: wicke****@lists***** >Subject: [Wicket-ja-user 600] Re: > Wicket の「二重サブミットに強い」は何を指している? > > >青山と申します。 > >若干脱線する感がありますが、AjaxButtonを少し拡張すると、 >railsのdisable_withのように、一度ボタンをクリックするとボタンをdisabledにし、 >二重クリックを防止する事もできます。 > >#もうちょっと簡単に書けるのかも。 > >import org.apache.wicket.ajax.AjaxRequestTarget; >import org.apache.wicket.ajax.IAjaxCallDecorator; >import org.apache.wicket.ajax.calldecorator.AjaxPostprocessingCallDecorator; >import org.apache.wicket.extensions.ajax.markup.html.IndicatingAjaxButton; > >public abstract class StrictAjaxButton extends IndicatingAjaxButton { > @Override > protected IAjaxCallDecorator getAjaxCallDecorator() { > return new >AjaxPostprocessingCallDecorator(super.getAjaxCallDecorator()) { > > @Override > public CharSequence postDecorateScript(CharSequence script) { > return script + "this.disabled = true;"; > } > }; > } > > @Override > protected void onError(AjaxRequestTarget target, Form<?> form) { > this.setEnabled(true); > target.addComponent(this); > } >} > >_______________________________________________ >Wicket-ja-user mailing list >Wicke****@lists***** >http://lists.sourceforge.jp/mailman/listinfo/wicket-ja-user