Apache Wicket에서 AjaxSelfUpdatingTimerBehavior를 추가 한 다음 제거하는 데 문제가 있습니다. 동작이 추가되었지만 브라우저에서 곧 동작하는 "페이지 만료"가 발생하면 제거 작업이 깨끗하지 않기 때문에 동작을 제거하는 즉시 동작이 추가됩니다. 내 설정은 기본적으로 타이머 및 두 개의 링크 ("이동"및 "중지")로 변경되기 시작하는 레이블입니다. "go"를 클릭 한 다음 "stop"을 클릭 할 수 있기를 원합니다 (분명히 다른 방법으로는 작동하지 않을 것입니다!).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>
여기 내 코드입니다 : 내가 개찰구 1.4.3을 사용하고
// 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);
}
}
가 여기 내 전체 마크 업입니다.
도움을 주시면 감사하겠습니다. 감사.
또한 stop() 메서드를 사용하여 구현했습니다. 동작을 제거하는 것이 (수동으로) 정말로 필요한지 나는 모른다. 중지 된 경우 더 이상 실행되지 않습니다. 그리고 일단 사용자가 새로운 페이지를 열면 어쨌든 그 행동은 사라집니다. – Friederike