[英]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.