This Project Has Not Released Any Files
wicket-extentionsのバージョンは1.3.5
IndicatingAjaxButtonにおいて画像の表示を行うビヘイビアはWicketAjaxIndicatorAppenderですがIndicatingAjaxButtonクラス内では下記のように使用されています。
ですのでIndicatingAjaxButtonをサブクラス化して独自の画像を表示させるクラスを作成したり、コンストラクタに何か渡すことで変更可能というわけではありません。
- public abstract class IndicatingAjaxButton extends AjaxButton implements IAjaxIndicatorAware{
- private static final long serialVersionUID = 1L;
- //直接Newされている。
- private final WicketAjaxIndicatorAppender indicatorAppender =
- new WicketAjaxIndicatorAppender();
- public IndicatingAjaxButton(String id, Form form){
- super(id, form);
- add(indicatorAppender);
- }
- protected abstract void onSubmit(AjaxRequestTarget target, Form form);
- public String getAjaxIndicatorMarkupId(){
- return indicatorAppender.getMarkupId();
- }
- }
ですので、この場合はorg.apache.wicket.ajax.markup.html.form.AjaxButtonとorg.apache.wicket.ajax.!IAjaxIndicatorAwareを実装した独自のIndicatingAjaxButtonクラスを作成しなければいけません。また、実際に画像のURLが生成される箇所はWicketAjaxIndicatorAppender#getIndicatorUrlであるためこのメソッドをオーバーライドしたサブクラスも必要となります。
- public final class LazyLoadingPage extends WebPage {
- public LazyLoadingPage() {
- Form form = new Form("form");
- AjaxButton indicating = new MyIndicatingAjaxButton("submit", form) {
- @Override
- protected void onSubmit(AjaxRequestTarget target, Form form) {
- try {
- //画像がちゃんと表示されるかどうか確認のため2秒間スリープする。
- Thread.sleep(2000);
- } catch (InterruptedException e) {
- throw new RuntimeException(e);
- }
- }
- };
- add(form.add(indicating));
- }
- /**
- * 独自のIndicatingAjaxButton
- */
- private abstract class MyIndicatingAjaxButton extends
- AjaxButton implements IAjaxIndicatorAware{
- private WicketAjaxIndicatorAppender appender;
- public MyIndicatingAjaxButton(String id, Form form) {
- super(id, form);
- add(appender = getWicketAjaxIndicatorAppender());
- }
- public WicketAjaxIndicatorAppender getWicketAjaxIndicatorAppender(){
- return new MyAjaxIndicatorAppender();
- }
- @Override
- public String getAjaxIndicatorMarkupId() {
- return appender.getMarkupId();
- }
- }
- /**
- * 画像のパスを決定するビヘイビア
- */
- private class MyAjaxIndicatorAppender extends WicketAjaxIndicatorAppender{
- private static final String INDICATOR_URL = "img/lazy.gif";
- @Override
- protected CharSequence getIndicatorUrl() {
- return INDICATOR_URL;
- }
- }
- }
そもそもIndicatingAjaxButtonクラスがMyIndicatingAjaxButton#getWicketAjaxIndicatorAppenderのようなメソッドをが用意していてくれればいいと思うのですがなぜかありません。なぜ??
wicket-extentionsのバージョンは1.3.5
AjaxLazyLoadPanelにおいて画像のパスを決定するのはgetLoadingComponentメソッドになります。
ですのでAjaxLazyLoadPanelの無名クラスもしくはサブクラスにて下記のようにすれば画像の変更が可能です。
この画像のパスはメソッドを呼び出す事で生成するようにするクラスを1つ作成していればより柔軟なクラスが作成できるかと思います。