Событие Apache Wicket на странице "Страница была отмечена на..."

У меня есть монтирование страницы в этой форме (с одним предопределенным параметром):

mountPage("/lista/${variant}", StronaEntityV2.class);

когда параметр "вариант" задан, все в порядке. Но когда параметр отсутствует (тоже нормально с точки зрения приложения), URL строится в форме

wicket/bookmarkable/all....package...StronaEntityV2?8

Это тоже нормально, но я буду знать эту ситуацию. В простой ситуации (с одним предопределенным параметром) проверка параметров хороша, но в более сложных не так проста (и должна содержать код в разных местах). Мое идеальное решение - это событие

page.OnPageIsMountedOn(URL to_me)

Я приму широкий спектр решений.

ФОРМАЛЬНО: пожалуйста, интегрируйте синонимы в теги wicket-1.6 и wicket-6 и создайте новый wicket-7

1 ответ

Решение

Ваша страница настроена на прослушивание /lista/${variant},

Когда вы делаете: setResponsePage(StronaEntityV2.class, paramsWithVariant) тогда Wicket будет использовать точку монтирования и выдаст: /lista/variantValue,

Но если вы делаете: setResponsePage(StronaEntityV2.class)т. е. никакие PageParameters не предоставлены, тогда Wicket будет игнорировать /lista/${variant} (потому что он не совпадает) и создаст URL страницы по умолчанию, т.е. /wicket/bookmarkable/com.example.StronaEntityV2,

Таким образом, приложение контролирует, какой URL следует использовать.

Вы можете использовать необязательный параметр placeholder: /lista/#{variant}, Обратите внимание, что я использую # вместо $ сейчас. Таким образом, калитка будет производить /lista/ когда не предоставлен вариантный параметр. В конструкторе страниц вы будете знать, что URL всегда "/lista", но параметр может быть нулевым, поэтому лучше использовать: pageParameters.get("variant").toXyz(defaultValue) или же .toOptionalXyz(),

Другие вопросы по тегам