是否有 BreadCrumbBar 的方法可以重载以添加要刷新的额外组件?

Is there a method of BreadCrumbBar I can overload to add an extra Component to be refreshed?

我有一个带有使用 BreadCrumbBar (org.apache.wicket.extensions.breadcrumb) 的数据面板的 wicket 页面。如果我下降一个级别,则会自动添加一个新的面包屑并刷新数据面板。如果我点击之前的面包屑之一,我的数据面板就会正确更新。现在我想确保页面(标题)上的一些额外组件也得到更新。当我自己控制 link 时这很好用,但是对于面包屑 links 我没有完全控制。

有没有方法BreadCrumbBar我可以重载来添加要刷新的额外组件?我假设 BreadCrumbBar 中的 link 是 ajax link,但是我在 BreadCrumbBar 中找不到 ajax 目标(或任何child 个组件)。

默认情况下,BreadCrumbBar 使用 BreadCrumbLinks 来呈现其 links,这是通常的 Links(而不是 AjaxLinks)。

要获得 ajax 行为,您可以尝试创建自己的 link (BreadCrumbAjaxLink) 实现,使用 AjaxLink 作为基础并在 [=17 中实现=] 存在于 BreadCrumbLinkonClick().

中的相同逻辑

然后使用 BreadCrumbAjaxLink 而不是 BreadCrumbLink.

创建一个 BreadCrumbComponent 的类似物(我们称之为 AjaxBreadCrumbComponent

然后覆盖BreadCrumbBarnewBreadCrumbComponent()方法:

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 中,您可以更新任何您想要的附加组件。 (您可能也需要更新栏本身)。

由于扩展几个 类 对我的用例来说似乎有点过分,我尝试了一些最终有效的不同方法。

通过重载 BreadCrumbBarsetActive 方法,我可以为页面标题模型设置一些文本。然后该文本显示在页面上。

我仍然不确定 BreadCrumbBar 是如何处理这个问题的。我认为整个页面都已刷新,但没有完成任何 ajax 调用。