繁体   English   中英

有没有我可以重载添加要刷新的额外Component的BreadCrumbBar的方法?

[英]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)实现与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调用完成。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM