1

在 Wicket Application 类中,我在 /about 位置安装了一个页面

mountBookmarkablePage("about", AboutPage.class);

我确认关于页面在 /about 可用。然后在需要指向 about 页面链接的页面中,我使用 Wicket 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");

这会将目标 URL 更改为

http://localhost:8080/about

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

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

4

2 回答 2

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>

是的,它稍微有点冗长,但也很容易扩展。如果你愿意,你可以创建你自己的便利子类被BookmarkablePageLink调用BookmarkableTextLink并有一个

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

它的构造函数。

于 2010-01-16T20:41:35.600 回答
0

找到了解决方案:BookmarkablePageLink 类

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

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

于 2010-01-16T20:27:43.323 回答