java – 如何从Apache Wicket中的组件中正确删除AjaxSelfUpdatin
发布时间:2020-12-15 03:03:13 所属栏目:Java 来源:网络整理
导读:我在Apache Wicket中添加然后删除AjaxSelfUpdatingTimerBehavior时遇到了麻烦.行为被添加好了,但是一旦我删除了行为,我很快就会在浏览器中出现“Page Expired”,我想是因为删除不干净.我的设置基本上是一个标签,它通过计时器开始改变,还有两个链接:“go”和
我在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> 这是我的代码: // 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); } } 我正在使用Wicket 1.4.3. 任何帮助非常感谢.谢谢. 解决方法
我通过使用stop()方法解决了这个问题,而不是试图完全删除行为.
我确实希望在停止它之后在某个时刻完全删除它(因为我的解决方案涉及每次我点击“go”时新建一个行为,我想继续停止并开始而不会产生一百万行为)所以我得到了维护一些稍后往返的行为清单. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |