Есть ли метод BreadCrumbBar, который я могу перегрузить, чтобы добавить дополнительный компонент для обновления?
У меня есть страница калитки с панелью данных, которая использует BreadCrumbBar
(Org.apache.wicket.extensions.breadcrumb). Если я опускаюсь на уровень, автоматически добавляется новая крошка и обновляется панель данных. Если я нажму на одну из предыдущих крошек, моя панель данных обновится правильно. Теперь я хочу убедиться, что некоторые дополнительные компоненты на странице (заголовок) также будут обновлены. Это прекрасно работает, когда я сам контролирую ссылку, но для ссылок "хлебная крошка" у меня нет полного контроля.
Есть ли способ BreadCrumbBar
Я могу перегрузить, чтобы добавить дополнительный компонент для обновления? Я предполагаю, что ссылки в BreadCrumbBar
ссылки ajax, но я не могу найти цель ajax в BreadCrumbBar
(или любой из дочерних компонентов).
2 ответа
По умолчанию, BreadCrumbBar
использования BreadCrumbLink
s, чтобы сделать его ссылки, которые обычно Link
с (а не AjaxLink
с).
Чтобы получить поведение Ajax, вы можете попробовать создать свою собственную ссылку (BreadCrumbAjaxLink
) реализация с использованием AjaxLink
в качестве основы и реализовать в onClick(AjaxRequestTarget)
та же логика, которая существует в BreadCrumbLink
"s onClick()
,
Затем создайте аналог BreadCrumbComponent
(давайте назовем это AjaxBreadCrumbComponent
) используя ваш BreadCrumbAjaxLink
вместо BreadCrumbLink
,
А затем переопределить BreadCrumbBar
"s newBreadCrumbComponent()
метод:
protected Component newBreadCrumbComponent(final String id, final long index, final int total,
final IBreadCrumbParticipant breadCrumbParticipant)
{
boolean enableLink = getEnableLinkToCurrent() || (index < (total - 1));
return new AjaxBreadCrumbComponent(id, getSeparatorMarkup(), index, this,
breadCrumbParticipant, enableLink);
}
В BreadCrumbAjaxLink
Вы можете обновить любой дополнительный компонент, который вы хотите. (Вам, вероятно, придется обновить и сам бар).
Поскольку расширение нескольких классов показалось мне немного излишним, я попробовал что-то другое, что в итоге сработало.
Перегружая setActive
метод BreadCrumbBar
Я мог бы установить текст для модели заголовка страницы. Этот текст был затем показан на странице.
Я до сих пор не уверен, как BreadCrumbBar
обрабатывает это. Я думаю, что вся страница обновлена, и вызов ajax не выполняется.