java - 有没有一种可以重载的 BreadCrumbBar 方法来添加要刷新的额外组件?

标签 java apache wicket wicket-7

我有一个带有数据面板的 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 .

然后覆盖 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 ,您可以更新任何您想要的附加组件。 (您可能还需要更新栏本身)。

关于java - 有没有一种可以重载的 BreadCrumbBar 方法来添加要刷新的额外组件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49238265/

相关文章:

apache - 如何重用已经使用 Apache Lucene 创建的索引?

java - Wicket 动态 ListView - 默认项目不会通过 Ajax 更新

java - Wicket 页面已过期

java - 为什么 Eclipse 没有 java 编译器的路径?

java : list that contains unique elements in order

java - HTTP 客户端 - HTTP 405 错误 "Method not allowed"。我发送了 HTTP Post,但由于某种原因发送了 HTTP Get

apache - 除了特定页面之外,如何将 http 重定向到 https,然后将 https 重定向到同一页面的 http?

java - 无法使用 DataNucleus GAE/J 插件版本 2 将字节代码增强为 JDO 3.0

java - 在 firebase 中找不到 getValue

javascript - 使用 STOMP 调用一项接受多个参数的服务