2010-01-16 9 views
1

Dans la classe d'application Wicket J'ai monté une page à l'endroit/à proposLes liens de pages Wicket n'utilisent pas de stratégie de codage d'URL montée?

mountBookmarkablePage("about", AboutPage.class); 

Je vérifie que la page A propos est disponible à/au sujet. Ensuite, dans la page qui a besoin d'un lien vers la page à propos, j'utilise la classe Wicket Link:

add(new Link("link") { 

      @Override 
      public void onClick() { 
       setResponsePage(AboutPage.class); 
      } 

     }; 
) 

Les liens fonctionnent comme prévu, mais l'URL cible affichée dans la barre d'état du navigateur lorsque la souris est sur l'apparence de lien comme

http://localhost:8080/?wicket:interface=:0:linkpage:repeating:1:link::ILinkListener:: 

Une solution que j'ai trouvé est d'utiliser ExternalLink

new ExternalLink("link", "/about", "about"); 

Cela change l'URL cible à

http://localhost:8080/about 

qui est affiché dans la barre d'état du navigateur lorsque la souris est sur le lien.

Existe-t-il un moyen d'utiliser l'URL montée en tant que lien cible avec la classe Wicket Link, ou existe-t-il un moyen d'obtenir l'emplacement de montage pour une classe? classe (au lieu de le coder en dur dans le constructeur ExternalLink)?

Répondre

5

A cet effet, vous devez utiliser BookmarkablePageLink(comme vous dites que vous faites), pour définir l'étiquette de lien (ou tout autre contenu pour cette matière) il suffit d'appeler .add(Component... c) depuis BookmarkablePageLink est en fait un MarkupContainer .

Ainsi, pour créer un lien vers AboutPage.class que vous devez faire ceci:

BookmarkablePageLink aboutLink = new BookmarkablePageLink("link", AboutPage.class); 
aboutLink.add(new Label("linkText", "Go to About page")); 
add(aboutLink); 

et le balisage correspondant

<a wicket:id="link"><span wicket:id="linkText">Link text goes here</span></a> 

yeppers, il est un peu plus bavard, mais aussi très facilement extensible. Si vous voulez, vous pouvez créer votre propre sous-classe de commodité de BookmarkablePageLink appelé BookmarkableTextLink et un constructeur

new BookmarkableTextLink(String id, Class<Page> pageClass, String linkText); 

pour elle.

0

trouvé une solution: la classe BookmarkablePageLink

add(new BookmarkablePageLink("link", AboutPage.class)); 

Cette solution a seulement un petit problème: l'étiquette de lien ne peut pas être, peut-être cela peut être fait par l'attribution d'un modèle.