J'ai un problème avec PagingNavigator dans Wicket et je ne comprends pas pourquoi je l'ai. Voici la chose, je voulais utiliser un PagingNavigator avec un DataviewPourquoi le PagingNavigator ne génère-t-il pas les URL?
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);
Dans le fichier html, je simplement:
<wicket:enclosure child="navigator">
<div class="navigator">
<span wicket:id="navigator" ></span>
</div>
</wicket:enclosure>
Quand je test dans un navigateur Web, en fait, je la pages nombre représenté par:
< < < 1 2 3 4 5 6 7 8 9 10> >>
MAIS aucun d'entre eux sont cliquables.
j'ai vu dans Firebug que les urls ne sont pas correctement générés comme ceci:
<a href="?wicket:interface=:13:mypage:navigator:navigation:0:pageLink:4:ILinkListener::"><span>1</span>
</a>
Au lieu de cela, je suis juste avoir
<span>1</span>
Je ne comprends pas, ce que je fais faux ?
Voici le code de mon fournisseur
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;
}
}
La méthode size()
retourne la bonne valeur et navigator.isEnabled()
renvoie true
Eh bien, après une journée entière de creuser, j'ai finalement trouvé où mon problème est venu de: J'ai un WebMarkupContainer
qui a été ajouté à ma page, si j'enlève ce WebMarkupContainer
, le PagingNavigator
fonctionne très bien. Cependant, il n'y a pas de dépendances entre les deux, j'utilise le WebMarkupContainer
pour afficher un message si une liste de Tickets est vide ou non. Alors POURQUOI l'influence WebMarkupContainer
sur le PagingNavigator
?
Utilisez-vous Ajax? Si oui, avez-vous ajouté 'PagingNavigator' à la cible de la requête? – gnuf
Non, je n'utilise pas Ajax – dagofly
A propos de WebMarkupContainer: difficile à dire sans voir plus de code. Pouvez-vous en être fier plus? – bert