我有一个带有数据面板的 wicket 页面,该面板使用 BreadCrumbBar
(org.apache.wicket.extensions.breadcrumb)。如果我下降一个级别,则会自动添加新的面包屑并刷新数据面板。如果我单击之前的面包屑之一,我的数据面板就会正确更新。现在我想确保页面上的一些额外组件(标题)也得到更新。当我自己控制链接时,这工作得很好,但对于面包屑链接,我无法完全控制。
是否有一种可以重载的 BreadCrumbBar
方法来添加要刷新的额外组件?我假设 BreadCrumbBar
中的链接是 ajax 链接,但我在 BreadCrumbBar
(或任何子组件)中找不到 ajax 目标。
最佳答案
默认情况下,BreadCrumbBar
使用BreadCrumbLink
s 呈现其链接,这很常见 Link
s(而不是 AjaxLink
s)。
要获得 ajax 行为,您可以尝试使用 BreadCrumbAjaxLink
创建自己的链接 ( AjaxLink
) 实现作为基础并在 onClick(AjaxRequestTarget)
中实现BreadCrumbLink
中存在相同的逻辑的onClick()
.
然后创建 BreadCrumbComponent
的类似物(我们称之为 AjaxBreadCrumbComponent
)使用您的 BreadCrumbAjaxLink
而不是BreadCrumbLink
.
然后覆盖 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
,您可以更新任何您想要的附加组件。 (您可能还需要更新栏本身)。
关于java - 有没有一种可以重载的 BreadCrumbBar 方法来添加要刷新的额外组件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49238265/