例如,我有一个html span,应该在应用程序进行一些测试时更新(比如做post,然后等待一段时间用于响应并表示结果)。所以我想展示这个行动的当前进展。
我尝试在myPage.java中创建扩展WebPage的线程。它的定义是:
class TestThread extends Thread{
private Label current_message_lbl;
private Component component;
public void run() {
try {
this.sleep(1000);
current_message_lbl.setDefaultModelObject(new StringResourceModel("test-SENDING-COMMANDS",component, null));
/* HTTP POST and other test code*/
} catch (Exception e) {
System.out.println(e.getMessage());
}
}
public void setCurrentMesssageLabel(Label current_message_lbl){
this.current_message_lbl = current_message_lbl;
}
public void setComponent(Component component){
this.component = component;
}
}
我从以下开始:
TestThread thread = new TestThread();
thread.setCurrentMesssageLabel(current_message_lbl);
thread.setComponent(component);
thread.start();
我收到此错误消息后
当前线程Thread-103
没有附加应用程序
我也尝试过定义类似的线程:
class TestThread extends WicketApplication implements Runnable{
答案 0 :(得分:4)
您可以将AjaxSelftUpdatingTimeBehavior添加到您的组件。比此行为每秒或更新时更新组件。但是您必须在线程中更改组件的模型。
此外,如果您尝试延迟加载组件,则可以检查AjaxLazyLoadPanel。 here和here中有一些示例。