Событие 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()
,