[Wicket-ja-user 41] Re: AjaxLazyLoadPanel の画像の変更方法

Back to archive index

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
>




Wicket-ja-user メーリングリストの案内
Back to archive index