我在Wicket框架中要求在加载页面时显示进度条。我已经看过很多例子,但我无法弄明白。
我知道页面加载的时间,所以20秒的时间我想调用进度条。我怎样才能做到这一点?
答案 0 :(得分:1)
假设您通过单击某个链接/按钮打开页面,其中一个选项可能如下所示。该解决方案具有带有AjaxIndicatorAppender的IndicatingAjaxButton,并在' onSubmit'中启动了新的Thread。方法。在开始新的Thread之前,它有setResponsePage到目标页面,这将需要10秒钟加载。
带有按钮的TestPage打开目标页面TestPage2,延迟时间为10秒。在你的情况下,它将是20。
public class TestPage extends WebPage implements IAjaxIndicatorAware {
AjaxIndicatorAppender indicator;
public TestPage(final PageParameters parameters) {
super(parameters);
setOutputMarkupId(true);
indicator = new AjaxIndicatorAppender(){
@Override
protected CharSequence getIndicatorUrl() {
return super.getIndicatorUrl();
}
};
Form<Void> form = new Form<Void>("form");
IndicatingAjaxButton button = new IndicatingAjaxButton("submit", form) {
protected void onSubmit(final AjaxRequestTarget target, Form form) {
setResponsePage(new TestPage2(null));
new Thread() {
public void run() {
//Do Nothing
}
}.start();
}
};
button.add(indicator);
form.add(button);
add(form);
}
@Override
public String getAjaxIndicatorMarkupId() {
return indicator.getMarkupId();
}
}
TestPage.html:
<html xmlns:wicket>
<style>
.wicket-ajax-indicator img{
width:50px;
height:50px;
}
</style>
<head>
</head>
<body>
<strong>Wicket Quickstart Archetype Homepage</strong>
<div style="width:50%;">
<form wicket:id="form">
<input type="submit" wicket:id="submit" value="Open Test Page 2">
</form>
</div>
</body>
</html>
以下是延迟回复的页面:
public class TestPage2 extends WebPage {
public TestPage2(PageParameters parameters) {
super(parameters);
try {
Thread.sleep(10000);
} catch (InterruptedException e) {
e.printStackTrace();
}
add(new Label("delayedLbl", Model.of("Delayed by 10 seconds...")));
}
}
这是TestPage2.html:
<html xmlns:wicket>
<head>
</head>
<body>
<div>
<span wicket:id="delayedLbl">Delayed...</span>
</div>
</body>
</html>
希望这有帮助。