[英]Is there a method of BreadCrumbBar I can overload to add an extra Component to be refreshed?
我有一个带有数据面板的检票口页面,该页面使用了BreadCrumbBar
(org.apache.wicket.extensions.breadcrumb)。 如果我降低级别,则会自动添加新的面包屑,并刷新数据面板。 如果单击以前的面包屑之一,则数据面板会正确更新。 现在,我要确保页面上的一些额外组件(标题)也得到更新。 当我自己控制链接时,此方法效果很好,但是对于面包屑链接,我没有完全控制权。
有没有我可以重载添加要刷新的额外Component的BreadCrumbBar
的方法? 我假设BreadCrumbBar
中的链接是ajax链接,但是我在BreadCrumbBar
(或任何子组件)中找不到ajax目标。
默认情况下, BreadCrumbBar
使用BreadCrumbLink
呈现其链接,这些链接是通常的Link
(而不是AjaxLink
)。
为了获得ajax行为,您可以尝试使用AjaxLink
作为基础来创建自己的链接( BreadCrumbAjaxLink
)实现,并在onClick(AjaxRequestTarget)
实现与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调用完成。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.