Как изменить Wicket URL bookmarkablePage Structure?

Как изменить структуру закладок Wicket URL?

проблема

По умолчанию URL-адрес, сгенерированный Wicket, отстой, длинный и некрасивый и содержит полное имя класса страницы. Это выглядит примерно так:

http://localhost:8080/example?wicket:bookmarkablePage=:com.example.page.ResultPage&url=google.com

Note
Что за чертовщина «wicket:bookmarkablePage» в URL-адресе, и почему Wicket создал такую ​​уродливую структуру URL-адресов? После развертывания приложения Wicket на клиентском сайте многие клиенты отправляют электронные письма с жалобами на некрасивую структуру URL-адресов bookmarkablePage. Это просто звучит проводно и вообще не имеет смысла, в чем преимущества этого? Вы собираетесь попросить моего посетителя добавить в закладки этот уродливый URL-адрес?

Решение

К счастью, Wicket предоставляет функцию «URL mounting», чтобы скрыть уродливые URL-адреса страниц с закладками на определенный путь в нашем приложении.

Чтобы исправить это, измените некрасивую структуру URL-адресов по умолчанию в классе приложения Wicket, метод «init()», как показано ниже.

import org.apache.wicket.protocol.http.WebApplication;
import org.apache.wicket.request.target.coding.QueryStringUrlCodingStrategy;
import com.example.user.SuccessPage;

public class WicketApplication extends WebApplication {

    @Override
    protected void init() {
        super.init();
        mount(new QueryStringUrlCodingStrategy("result",ResultPage.class));
    }
}

ИспользуетQueryStringUrlCodingStrategy() для монтирования страницы «ResultPage.class» в аккуратную и понятную структуру URL «result», см. Вывод:

http://localhost:8080/example/result?url=google.com