Toshihiro Shimizu
shimi****@gmail*****
2008年 3月 24日 (月) 15:33:03 JST
清水(meso)です。 Ajax処理中に表示される画像は、 org.apache.wicket.ajax.AbstractDefaultAjaxBehaviorクラス内で public static final ResourceReference INDICATOR = new ResourceReference(AbstractDefaultAjaxBehavior.class, "indicator.gif"); のようにファイル名がべた書きされているので(Ver.1.3.1の場合)、コンストラクタの引数でファイル名を指定して・・・とかで変更することは不可能です。 ではどうするのかというと、表示する画像ファイルの指定を変更したコンポーネントクラスとビヘイビアクラスを自分で作ってそちらを使えばいいかと思います。 例えば、org.apache.wicket.extensions.ajax.markup.html.IndicatingAjaxButtonの画像を変更する場合、まずビヘイビアクラスであるorg.apache.wicket.extensions.ajax.markup.html.WicketAjaxIndicatorAppenderを継承してMyAjaxIndicatorAppenderクラスを作成し、onRenderedメソッドを例えば次のようにオーバーライドします。 public void onRendered(Component component) { final Response r = component.getResponse(); r.write("<span style=\"display:none;\" class=\""); r.write(getSpanClass()); r.write("\" "); r.write("id=\""); r.write(getMarkupId()); r.write("\">"); r.write("<img src=\""); r.write("自分の画像のパス+ファイル名"); r.write("\" alt=\"\"/></span>"); } (もしくはgetIndicatorUrlメソッドを、自分の画像のパス+ファイル名を返すようにオーバーライドしてもいい) 次にこのMyAjaxIndicatorAppenderクラスを使うようにIndicatingAjaxButtonクラスを変更します。IndicatingAjaxButtonクラス内で private final WicketAjaxIndicatorAppender indicatorAppender = new WicketAjaxIndicatorAppender(); となっている箇所を、 private final WicketAjaxIndicatorAppender indicatorAppender = new MyAjaxIndicatorAppender(); と変更してMyIndicatingAJaxButtonクラスとして保存します。 これで、MyIndicatingAjaxButtonクラスをIndicatingAJaxButtonの代わりに使えば、自分の好みの画像を表示することができるはずです。 AjaxLazyLoadPanelの場合は、getLoadingComponentメソッド書き換えるだけだからもっと簡単かな。 画像をどこにおくかとで、ファイルパスの指定がなかなか上手くいかなかったりするかもしれませんが、試行錯誤してみてください。 以上です。 08/03/24 に maeda<aaake****@gmail*****> さんは書きました: > maedaです。 > > org.apache.wicket.extensions.ajax.markup.html.IndicatingAjaxLink > や > org.apache.wicket.extensions.ajax.markup.html.AjaxLazyLoadPanel > > などの処理中時に表示される画像を変更することは可能でしょうか? > > よろしくお願いします。 > > _______________________________________________ > Wicket-ja-user mailing list > Wicke****@lists***** > http://lists.sourceforge.jp/mailman/listinfo/wicket-ja-user >