Ссылки на странице калитки не используют смонтированную стратегию кодирования URL? - PullRequest
1 голос
/ 16 января 2010

В классе Wicket Application я смонтировал страницу в местоположении / около

mountBookmarkablePage("about", AboutPage.class);

Я подтверждаю, что страница о программе доступна на странице / о. Затем на странице, где требуется ссылка на страницу о программе, я использую класс 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 или есть способ получить местоположение монтирования для класса, чтобы я мог использовать его для создания URL-адреса ссылки для AboutPage.class (вместо жесткого кодирования в конструкторе ExternalLink)?

Ответы [ 2 ]

5 голосов
/ 16 января 2010

Для этого вы должны использовать 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);

конструктор для него.

0 голосов
/ 16 января 2010

Нашли решение: класс BookmarkablePageLink

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

Это решение имеет только небольшую проблему: невозможно установить метку ссылки, возможно, это можно сделать, назначив модель.

...