加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

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”时新建一个行为,我想继续停止并开始而不会产生一百万行为)所以我得到了维护一些稍后往返的行为清单.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读