Apache 개찰구의 구성 요소에서 AjaxSelfupdatingTimerBehavior를 올바르게 제거하려면 어떻게해야합니까?

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

  •  11-09-2019
  •  | 
  •  

문제

Apache 개찰구에서 AjaxSelfupdatingTimerBehavior를 추가 한 다음 제거하는 데 어려움이 있습니다. 동작이 더해 지지만 동작을 제거하자마자 "페이지 만료"가 곧 브라우저에 올라 오면 제거가 깨끗하지 않아서 생각합니다. 내 설정은 기본적으로 타이머로 변경되기 시작하는 레이블이며 "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);
    }
}

개찰구 1.4.3을 사용하고 있습니다.

도움이 주셔서 감사합니다. 감사.

도움이 되었습니까?

해결책

나는 이것을 사용하여 이것을 해결했다 stop() 방법 동작을 완전히 제거하려고 시도하는 대신.

나는 실제로 하다 (내 솔루션은 내가 "가"때마다 행동을 새롭게하는 것과 관련이 있기 때문에, 나는 백만 개의 행동을 강요하지 않고 계속 멈추고 시작하고 싶기 때문에, 나는 목록을 유지함으로써 그것을 반올림했다. 나중에 왕복 여행에서 제거해야 할 행동.

다른 팁

타이머 동작을 다시 활성화하기 위해 Respart () 또는 AbstractAjaxtImerBehavior의 무언가를 호출 할 수있어서 좋았을 것입니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top