是否有 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
使用 BreadCrumbLink
s 来呈现其 links,这是通常的 Link
s(而不是 AjaxLink
s)。
要获得 ajax 行为,您可以尝试创建自己的 link (BreadCrumbAjaxLink
) 实现,使用 AjaxLink
作为基础并在 [=17 中实现=] 存在于 BreadCrumbLink
的 onClick()
.
中的相同逻辑
然后使用 BreadCrumbAjaxLink
而不是 BreadCrumbLink
.
创建一个 BreadCrumbComponent
的类似物(我们称之为 AjaxBreadCrumbComponent
)
然后覆盖BreadCrumbBar
的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
中,您可以更新任何您想要的附加组件。 (您可能也需要更新栏本身)。
由于扩展几个 类 对我的用例来说似乎有点过分,我尝试了一些最终有效的不同方法。
通过重载 BreadCrumbBar
的 setActive
方法,我可以为页面标题模型设置一些文本。然后该文本显示在页面上。
我仍然不确定 BreadCrumbBar
是如何处理这个问题的。我认为整个页面都已刷新,但没有完成任何 ajax 调用。
我有一个带有使用 BreadCrumbBar
(org.apache.wicket.extensions.breadcrumb) 的数据面板的 wicket 页面。如果我下降一个级别,则会自动添加一个新的面包屑并刷新数据面板。如果我点击之前的面包屑之一,我的数据面板就会正确更新。现在我想确保页面(标题)上的一些额外组件也得到更新。当我自己控制 link 时这很好用,但是对于面包屑 links 我没有完全控制。
有没有方法BreadCrumbBar
我可以重载来添加要刷新的额外组件?我假设 BreadCrumbBar
中的 link 是 ajax link,但是我在 BreadCrumbBar
中找不到 ajax 目标(或任何child 个组件)。
默认情况下,BreadCrumbBar
使用 BreadCrumbLink
s 来呈现其 links,这是通常的 Link
s(而不是 AjaxLink
s)。
要获得 ajax 行为,您可以尝试创建自己的 link (BreadCrumbAjaxLink
) 实现,使用 AjaxLink
作为基础并在 [=17 中实现=] 存在于 BreadCrumbLink
的 onClick()
.
然后使用 BreadCrumbAjaxLink
而不是 BreadCrumbLink
.
BreadCrumbComponent
的类似物(我们称之为 AjaxBreadCrumbComponent
)
然后覆盖BreadCrumbBar
的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
中,您可以更新任何您想要的附加组件。 (您可能也需要更新栏本身)。
由于扩展几个 类 对我的用例来说似乎有点过分,我尝试了一些最终有效的不同方法。
通过重载 BreadCrumbBar
的 setActive
方法,我可以为页面标题模型设置一些文本。然后该文本显示在页面上。
我仍然不确定 BreadCrumbBar
是如何处理这个问题的。我认为整个页面都已刷新,但没有完成任何 ajax 调用。