Есть ли метод BreadCrumbBar, который я могу перегрузить, чтобы добавить дополнительный компонент для обновления?

У меня есть страница калитки с панелью данных, которая использует BreadCrumbBar (Org.apache.wicket.extensions.breadcrumb). Если я опускаюсь на уровень, автоматически добавляется новая крошка и обновляется панель данных. Если я нажму на одну из предыдущих крошек, моя панель данных обновится правильно. Теперь я хочу убедиться, что некоторые дополнительные компоненты на странице (заголовок) также будут обновлены. Это прекрасно работает, когда я сам контролирую ссылку, но для ссылок "хлебная крошка" у меня нет полного контроля.

Есть ли способ BreadCrumbBar Я могу перегрузить, чтобы добавить дополнительный компонент для обновления? Я предполагаю, что ссылки в BreadCrumbBar ссылки ajax, но я не могу найти цель ajax в BreadCrumbBar (или любой из дочерних компонентов).

2 ответа

По умолчанию, BreadCrumbBar использования BreadCrumbLinks, чтобы сделать его ссылки, которые обычно 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 не выполняется.

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