1

Wicketアプリケーションクラスでは、/aboutの場所にページをマウントしました

mountBookmarkablePage("about", AboutPage.class);

アバウトページが/aboutで利用可能であることを確認します。次に、aboutページへのリンクが必要なページで、WicketLinkクラスを使用します。

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をWicketLinkクラスのターゲットリンクとして使用する方法はありますか、またはクラスのマウント場所を取得する方法があります。これを使用して、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 に答える