在Wicket Application类中,我已经在/ about
位置安装了一个页面mountBookmarkablePage("about", AboutPage.class);
我验证了about页面在/ about时可用。然后在需要链接到about页面的页面中,我使用Wicket Link类:
add(new Link("link") {
@Override
public void onClick() {
setResponsePage(AboutPage.class);
}
};
)
链接按预期工作,但当鼠标悬停在链接上时,目标网址显示在浏览器状态栏中
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.class构建链接URL (而不是在ExternalLink构造函数中对其进行硬编码)?
答案 0 :(得分: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,它稍微冗长,但也很容易扩展。如果您愿意,您可以创建一个名为BookmarkablePageLink
的{{1}}自己的便利子类,并拥有
BookmarkableTextLink
它的构造函数。
答案 1 :(得分:0)
找到一个解决方案:BookmarkablePageLink类
add(new BookmarkablePageLink("link", AboutPage.class));
此解决方案只有一个小问题:无法设置链接标签,也许这可以通过分配模型来完成。