Wicket页面链接不使用挂载的URL编码策略?
问题描述:
在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构造函数中对其进行硬编码)?
答
为此,你应该使用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
BookmarkableTextLink
自己方便的子类,并有一个
new BookmarkableTextLink(String id, Class<Page> pageClass, String linkText);
构造它。
答
发现了一个解决方案:BookmarkablePageLink类
add(new BookmarkablePageLink("link", AboutPage.class));
该解决方案只有一个小问题:链接标签不能设置,也许这可以通过分配模型来完成。