簡體   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