У меня проблема с PagingNavigator в Wicket, и я не понимаю, почему у меня это происходит. Вот то, что я хотел использовать PagingNavigator с Dataview
dataView = new DataView("pageableTicketsList", provider){
protected void populateItem(final Item item) {
//Somes codes here
};
navigator = new PagingNavigator("navigator", dataView);
dataView.setItemsPerPage(30);
addOrReplace(dataView);
addOrReplace(navigator);
В html-файле у меня просто есть:
<wicket:enclosure child="navigator">
<div class="navigator">
<span wicket:id="navigator" ></span>
</div>
</wicket:enclosure>
Когда я тестирую в веб-браузере, фактически, у меня номер страницы отображается как:
<< <1 2 3 4 5 6 7 8 9 10> >>
НО любой из них кликабелен.
Я видел в FireBug, что URL не генерируются должным образом, как это:
<a href="?wicket:interface=:13:mypage:navigator:navigation:0:pageLink:4:ILinkListener::"><span>1</span>
</a>
Вместо этого у меня просто
<span>1</span>
Я не понимаю, что я делаю не так?
Вот код моего провайдера
public class MyProvider implements IDataProvider {
private List<Ticket> ticketsList;
public MyProvider(TicketService ticketService // and some paramaters){
ticketsList = ticketService.getListBy(//the parameters);
}
public Iterator iterator(int first, int count) {
return ticketsList.subList(first, first + count).iterator();
}
public IModel model(final Object object) {
return new LoadableDetachableModel() {
@Override
protected Object load() {
return (Ticket)object;
}};
}
public int size() {
return ticketsList.size();
}
public void detach() {
}
public List<Ticket> getTicketsList() {
return ticketsList;
}
public void setTicketsList(List<ListTicketsExtranetView> ticketsList) {
this.ticketsList = ticketsList;
}
}
Метод size()
возвращает правильное значение, а navigator.isEnabled()
возвращает истину
Ну, после целого дня копания я наконец узнал, откуда возникла моя проблема:
У меня есть WebMarkupContainer
, который был добавлен на мою страницу, если я удаляю это WebMarkupContainer
, PagingNavigator
работает нормально. Между ними нет никаких зависимостей, хотя я использую WebMarkupContainer
, чтобы показать сообщение, если список Билетов пуст или нет.
Так ПОЧЕМУ WebMarkupContainer
оказывает влияние на PagingNavigator
?