6

在我当前的项目中,我遇到了在 wicket 中自定义 IndicatingAjaxLink 的问题,有什么解决方案可以将标准 gif 图像更改为我自己的吗?例如我们有以下监听器

   add(new IndicatingAjaxLink("closeReceivedBillspanel") {
            public void onClick(AjaxRequestTarget art) {
                  // some timeconsuming calculations
           }
   });

当用户单击此链接时,出现加载的 gif,我想更改此 gif,有没有解决此问题的方法?

4

2 回答 2

13

让您的页面实现 IAjaxIndicatorAware 接口

public class BasePage extends WebPage implements IAjaxIndicatorAware {   

 public BasePage(final PageParameters parameters) {
    // Home link
    AjaxLink<Page> homeLink = new AjaxLink<Page>("homeLink") {
      private static final long serialVersionUID = 1L;

      @Override
      public void onClick(AjaxRequestTarget target) {
        setResponsePage(HomePage.class);
      }
    };
    add(homeLink);
  }

  @Override
  public String getAjaxIndicatorMarkupId() {
    return "indicator";
  }

这样,您可以在 html 中通过更改“img”标签中的图像来设置要在加载出现时显示的任何图像

<div id="indicator" style="display: none;">
 <div class="indicator-content">
  Please wait... <wicket:link><img src="images/loading.gif" width="16" height="16" alt="loading" /></wicket:link>
 </div>
</div>
于 2012-08-02T12:25:01.780 回答
2

创建 yoru 自己的自定义类,例如(复制 IndicatingAjaxLink 中的内容并更新)

   public class MyIndicatingAjaxLink<T> extends AjaxLink<T> implements IAjaxIndicatorAware {
         private final MyAjaxIndicatorAppender indicatorAppender = new MyAjaxIndicatorAppender();    
    .
    //rest of the code is same as IndicatingAjaxLink class
    .
    }

您还需要在您的 customIndicatingAjaxLink 中自定义 AjaxIndicatorAppender,并且您需要覆盖 indicatorAppender 的以下方法以返回自定义图像的路径

protected CharSequence getIndicatorUrl()
于 2012-08-02T09:21:21.830 回答