我不确定这是否可行。当你点击“提交”按钮时,似乎有办法做到这一点。
private Button getButton(String id)
{
return new AjaxButton(id)
{
private static final long serialVersionUID = 1L;
{
setEnabled(true);
}
@Override
protected void onSubmit(AjaxRequestTarget target, Form<?> form)
{
debug = "Beginning a process....";
target.addComponent(debugLabel);
//Perform the first process
debug = "Beginning second process....";
target.addComponent(debugLabel);
//Perform the second process
debug = "Finishing....";
target.addComponent(debugLabel);
//Perform the third process
debug = "Done.";
target.addComponent(debugLabel);
}
@Override
protected void onError(AjaxRequestTarget target, Form form)
{
//NO-OP
}
};
}
}
如果不可能有多种实时更新的替代方案?我想要它,所以底部有一个状态标签更新,并告诉你在这一方法中取得了多少进展。
答案 0 :(得分:2)
您必须启动要在另一个线程中收到通知的进程。然后,您可以使用有关状态的信息更新用户会话,该状态将由绑定到标签的某些ajax行为定期检查。
在wicket 6中,你也可以使用WebSocketBehavior
答案 1 :(得分:1)
只需使用AjaxTimerBehavior,以便每1-2秒更新一次标签。
代码:
add(new AbstractAjaxTimerBehavior(Duration.seconds(1))
{
@Override
protected void onTimer(AjaxRequestTarget target)
{
target.add(label);
}
});
显然这个解决方案使用哑巴AJAX轮询,因此建议在内联网或其他低流量站点上使用它。