У меня есть AjaxPagingNavigator. В основном на определенном условии, список, который перезагружаются страницы AjaxPagingNavigator. Когда это происходит, я только хочу представить навигатора, когда список содержит больше чем 1 страницу.
Делает любой знает, где я могу присоединить обработчик так, чтобы я мог проверить на условие видимости в своем AjaxPagingNavigator и позволить/запретить видимость так, чтобы, когда навигатор обновляется через. ajax это или видимо или нет?
Разметка:
<div wicket:id="mainWrap">
<div wicket:id="navigator"/>
<div wicket:id="listWrap">
<div wicket:id="list><!-- here be content --></div>
</div>
</div>
Таким образом, у меня есть ajax событие, которое обновляет "mainWrap", который обновляет "навигатора" наряду со "списком" и переносами.
это - событие, которое инициировало все это.
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);
}
Править: Я знаю, что могу записать
navigator.setVisibility(list.getPageCount() > 1);
после создания навигатора и после обновления модели, но я надеялся инкапсулировать это в подклассе AjaxPagingNavigator.
Давненько я не прикасался к Wicket, но если память не изменяет:
Можете ли вы не переопределить метод isVisible() вашего объекта "навигатора", так, чтобы он отображался только при желаемом вами условии?
например, что-то вроде
.addComponent(new AjaxPagingNavigator(...) {
@Override public boolean isVisible() {
return model.getFound().size() > 25;
}
});