2010-01-16 36 views
1

在Wicket应用程序类我在的位置安装一个页/约Wicket页面链接不使用挂载的URL编码策略?

mountBookmarkablePage("about", AboutPage.class); 

我确认有关网页的网址是/约。然后在需要的链接有关网页的页面,我用的是检票Link类:

add(new Link("link") { 

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

     }; 
) 

如预期,但在浏览器状态栏中显示的目标URL当鼠标移动到链接看起来环节的工作像

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

,我已经找到了解决办法是使用ExternalLink

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

这改变了目标网址

http://localhost:8080/about 

当鼠标悬停在链接上时,它会在浏览器状态栏中显示。

有没有办法将挂载的URL用作Wicket Link类的目标链接,或者有办法获取类的挂载位置,以便我可以使用它来构建AboutPage的链接url。类(而不是在ExternalLink构造函数中对其进行硬编码)?

回答

5

为此,你应该使用BookmarkablePageLink(因为你说你在做),设置链接标签(或任何其他内容为此事)就叫.add(Component... c)因为BookmarkablePageLink实际上是一个MarkupContainer

所以,要创造AboutPage.class一个链接,你需要这样做:

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

和匹配标记

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

Yeppers,这是稍微详细,但也很容易扩展。如果你愿意,你可以创建一个名为BookmarkablePageLinkBookmarkableTextLink自己方便的子类,并有一个

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

构造它。

0

发现了一个解决方案:BookmarkablePageLink类

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

该解决方案只有一个小问题:链接标签不能设置,也许这​​可以通过分配模型来完成。