2012-08-02 22 views
5

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

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

如用户点击此链接,与出现加载GIF,我想改变这个GIF,是有这个问题的任何解决方案?

回答

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> 
2

创建夜自己的自定义类一样,(副本中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() 
相关问题