我有一个wicket页面,其中包含一个使用BreadCrumbBar
(org.apache.wicket.extensions.breadcrumb)的数据面板。如果我向下移动一个级别,则会自动添加新的痕迹并刷新数据面板。如果我点击之前的一个面包屑,我的数据面板会正确更新。现在我想确保页面上的一些额外组件(标题)也得到更新。我自己控制链接时工作正常,但对于面包屑链接我没有完全控制。
是否有BreadCrumbBar
的方法我可以重载以添加要刷新的额外组件?我假设BreadCrumbBar
中的链接是ajax链接,但我在BreadCrumbBar
(或任何子组件)中找不到ajax目标。
答案 0 :(得分:3)
默认情况下,BreadCrumbBar
使用BreadCrumbLink
来呈现其链接,这些链接通常是Link
s(而不是AjaxLink
s。)
要获得ajax行为,您可以尝试使用BreadCrumbAjaxLink
作为基础创建自己的链接(AjaxLink
)实现,并在onClick(AjaxRequestTarget)
中实现BreadCrumbLink
中存在的相同逻辑1}} onClick()
。
然后使用BreadCrumbComponent
代替AjaxBreadCrumbComponent
创建BreadCrumbAjaxLink
(我们称之为BreadCrumbLink
)的模拟。
然后覆盖BreadCrumbBar
的{{1}}方法:
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);
}
中,您可以更新所需的任何其他组件。 (您可能还需要更新栏本身。)
答案 1 :(得分:1)
由于扩展了几个类似乎对我的用例有点过分,我尝试了一些最终有用的东西。
通过重载setActive
的{{1}}方法,我可以将一些文本设置为页面标题模型。该文本随后显示在页面上。
我仍然不确定BreadCrumbBar
如何处理这个问题。我认为整个页面都刷新了,没有完成ajax调用。