Wicket页面链接不使用挂载的URL编码策略?

时间:2010-01-16 19:22:45

标签: url hyperlink wicket

在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构造函数中对其进行硬编码)?

2 个答案:

答案 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));

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

相关问题