Mam AjaxPagingNavigator. Zasadniczo w pewnym stanie, lista, którą strony AjaxPagingNavigator są przeładowywane. Kiedy tak się dzieje, chcę renderować nawigator tylko wtedy, gdy lista zawiera więcej niż 1 stronę.(Wicket) Zmień widoczność podczas odpowiedzi ajax ajax
Czy ktoś wie, gdzie mogę dołączyć moduł obsługi, aby można było sprawdzić warunek widoczności w moim AjaxPagingNavigator i włączyć/wyłączyć widoczność, aby nawigacja była aktualizowana przez. ajax jest albo widoczny, czy nie?
Markup:
<div wicket:id="mainWrap">
<div wicket:id="navigator"/>
<div wicket:id="listWrap">
<div wicket:id="list><!-- here be content --></div>
</div>
</div>
Więc mam ajax wydarzenie, które odświeża "mainWrap", który odświeża "Navigator" wraz z "listy" i opakowań.
to wydarzenie, które uruchamia całość.
protected void onSubmit(AjaxRequestTarget target, Form<?> form) {
List foo = null; // do work to get list
model.setFound(found); // update the model (thus updating "list")
target.addComponent(mainWrap);
}
Edit: wiem, że mogę napisać
navigator.setVisibility(list.getPageCount() > 1);
po utworzeniu nawigatora i po aktualizacji modelu, ale miałem nadzieję, że do hermetyzacji w podklasie AjaxPagingNavigator.
Bardzo podoba mi się ta odpowiedź.Dziękuję za wskrzeszenie tego problemu w przyszłości :) –
+1 - Ten był ratownikiem (zasługuje na dwa głosy w górę :). Ale dlaczego wywołanie "isVisible" w "onConfigure"? Używając przykładu Dmitrija, jeśli pierwszy ajax zwróci "false" dla "someExpensiveToCalculateCondition", a drugi zwróci "true", wierzę, że "isVisible" będzie fałszywe dla całego wyrażenia. –
Eduardo, ten oczywiście zależy od użycia. Zwykle wywołuje on isVisible() w celu respektowania zmian widoczności gdzieś w łańcuchu onConfigure. – msparer