我试图显示一条加载消息,告诉用户点击提交后他们在加载过程中的距离。问题是,加载栏显示,但它显示"加载0 0和#34;,直到过程结束。
private AjaxButton createSubmit() {
Submit = new AjaxButton("Submit",new Model<String>()) {
private static final long serialVersionUID = 202575339939441557L;
@Override
public void onSubmit(final AjaxRequestTarget target,
final Form<?> form) {
handleSubmit(target);
}
};
Submit.setOutputMarkupId(true);
Submit.add(new PleaseWaitBehavior(new Model<String>(
"Processing Message " + loadingNumber + " of " + size)));
return Submit;
}
这是处理提交行为的类。我在handleSubmit(target)方法中将这两个数字从0更改,并在该类的for循环中迭代LoadingNumber。该更改从未反映在邮件中,我已尝试删除并添加回PleaseWaitBehavior中。我完全难过了。 Wicket不允许我尝试做什么吗?
答案 0 :(得分:1)
Submit.add(new PleaseWaitBehavior(new Model<String>(
"Processing Message " + loadingNumber + " of " + size)));
我希望你意识到在这里连接一个稍后在UI中使用的String。没有代码会再次重新计算并为UI构建一个新的String。
请在https://cwiki.apache.org/confluence/display/WICKET/Working+with+Wicket+models了解Wicket中的静态与动态模型。
对于您的任务,您需要使用Ajax调用向服务器询问进度并重新绘制消息 这篇文章解释了这个问题,并提供了一个示例解决方案 - http://wicketinaction.com/2014/07/working-with-background-jobs/