Как изменить структуру закладок 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