我在Apache Wicket中添加然后删除AjaxSelfUpdatingTimerBehavior时遇到了麻烦.行为被添加好了,但是一旦我删除行为,我很快就会在浏览器中出现"Page Expired",我猜因为删除不干净.我的设置基本上是一个标签,它通过计时器开始改变,还有两个链接:"go"和"stop".我希望能够点击"go"然后"停止"(显然我知道它将永远不会以相反的方式工作!).这是我的完整标记:
<html>
<body>
<span wicket:id="message">message will be here</span><br/>
<a wicket:id="go">Go</a><br/>
<a wicket:id="stop">Stop</a>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)
这是我的代码:
// imports all from standard wicket
public class HomePage extends WebPage {
private static final int INTERVAL = 500;
public HomePage(final PageParameters parameters) {
final Component label = new Label("message",
"Hello").setOutputMarkupId(true);
add(label);
final IBehavior updater = new AjaxSelfUpdatingTimerBehavior(Duration
.milliseconds(INTERVAL)) {
@Override
protected void onPostProcessTarget(AjaxRequestTarget target) {
label.setDefaultModelObject(String.valueOf(System.nanoTime()));
}
};
AjaxLink<String> go = new AjaxLink<String>("go") {
@Override
public void onClick(AjaxRequestTarget target) {
label.add(updater);
target.addComponent(label);
}
};
AjaxLink<String> stop = new AjaxLink<String>("stop") {
@Override
public void onClick(AjaxRequestTarget target) {
label.remove(updater);
target.addComponent(label);
}
};
add(go, stop);
}
}
Run Code Online (Sandbox Code Playgroud)
我正在使用Wicket 1.4.3.
任何帮助非常感谢.谢谢.
我通过使用该stop()方法解决了这个问题,而不是尝试完全删除该行为。
实际上,我确实想在停止它后的某个时刻完全删除它(因为我的解决方案涉及每次我点击“开始”时更新一个行为,并且我想继续停止并开始而不累积一百万个行为)所以我通过以下方式解决了这个问题维护一个要在以后的往返中删除的行为列表。
| 归档时间: |
|
| 查看次数: |
4217 次 |
| 最近记录: |