どのように私は正しくはApache WicketのコンポーネントからAjaxSelfUpdatingTimerBehaviorを削除することができますか?

StackOverflow https://stackoverflow.com/questions/1654485

  •  11-09-2019
  •  | 
  •  

質問

私は、Apache WicketではAjaxSelfUpdatingTimerBehaviorを取り外し、その後追加してトラブルを抱えています。行動は大丈夫追加されますが、その後、すぐに私は行動を削除するように私は除去がきれいではなかったので、私は推測し、「ページの有効期限が切れて」非常にすぐにブラウザに出てくる取得します。 「停止」「行く」と:私のセットアップは、基本的には、タイマーによって変化し始め、そして二つのリンクラベルです。私は(明らかに私はそれが周りに他の方法で作業することはありません知っている!)をクリックし、「行く」とし、「停止」することができるようにしたいです。ここに私の完全なマークアップだ:

<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);
    }
}

私はウィケット1.4.3を使用しています。

すべてのヘルプははるかに高く評価。おかげます。

役に立ちましたか?

解決

私はstop()メソッドを使用しての代わりに、完全に動作を削除しようとすることで、これを解決します。

私は実際に私の解決策は、私は「行く」ヒット行動まで毎回NEWINGを含むので、が(それを停止した後、いくつかの時点で完全に削除したいですを、私は停止し、計上しなくて起動し続けたいです万人の行動は)ので、私はいくつかの後に、往復で除去される行動のリストを維持することにより、そのラウンドなっています。

他のヒント

再起動()、または再び有効にタイマー動作にAbstractAjaxTimerBehaviorに何かを呼び出すことができるように素敵だったでしょう。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top