在我当前的项目中,我遇到了在wicket中自定义IndicatingAjaxLink的问题,有什么解决方案可以将standart gif图像更改为我自己的吗?例如,我们有以下列表
add(new IndicatingAjaxLink("closeReceivedBillspanel") {
public void onClick(AjaxRequestTarget art) {
// some timeconsuming calculations
}
});
当用户点击这个链接时,加载的gif出现了,我想更改这个gif,这个问题有解决方案吗?
让您的页面实现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>
创建自己的自定义类,如(复制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,并且您需要覆盖以下indicatorAppander方法以返回自定义图像的路径
protected CharSequence getIndicatorUrl()