我在運行時在Wicket中創建新標籤時遇到了問題。當我添加一個新選項卡到我的Ajax TabbedBar的選項卡列表中時,我沒有看到屏幕上有任何更改,也許你可以幫助我?Wicket在運行時創建新標籤
ExamplePage擴展頁面:
private AjaxTabbedPanel<AbstractTab> myTabBar;
tabs = new ArrayList<AbstractTab>();
tabs.add(new AbstractTab(new Model<String>("Übersicht")) {
private static final long serialVersionUID = 1L;
@Override
public Panel getPanel(String panelId) {
if (myOverviewTab == null) myOverviewTab = new OverviewTab(panelId, getInstance());
return myOverviewTab;
}
});
tabs.add(new AbstractTab(new Model<String>("Details")) {
private static final long serialVersionUID = 1L;
@Override
public Panel getPanel(String panelId) {
if (myDetailTab == null) myDetailTab = new DetailTab(panelId);
return myDetailTab;
}
});
myTabBar = new AjaxTabbedPanel<AbstractTab>("tabs", tabs);
add(myTabBar);
這是我創建的啓動標籤和這纔是我的Runtimeaddition
public void newDetailTab(AjaxRequestTarget target){
System.out.println("newDetailtab");
tabs.add(new AbstractTab(new Model<String>("Details")) {
private static final long serialVersionUID = 1L;
@Override
public Panel getPanel(String panelId) {
return new DetailTab(panelId);
}
});
myTabBar.setSelectedTab(myTabBar.getSelectedTab()+1);
target.add(myTabBar);
}
所以在最後一行我想改變我的實際標籤,但實際上它不起作用。我想知道的是,第一個選項卡的編號爲-1(myTabBar.getSelectedtTab()),這是一個錯誤嗎?
我也試圖與一個AjaxRequestTarget更新我的TabBar,但有不同的到來錯誤:不能更新頁面或組件ID [tabs28]沒有被發現,同時嘗試執行...
希望你可以幫我。
編輯:我發現一些人在谷歌上有一個類似的問題,他們試圖使用LoadabledetachableModel ...我真的不知道如何包括這個,因爲它的抽象,我真的不知道如何填補這些模型的方法想要使用...
hm我將setOutputMarkupPlaceholderTag(true)添加到myTabBar,但沒有任何更改,同樣的錯誤... – RichieK
關於ajaxrequesttarget的一個問題:我也試圖通過參數,而我呼籲這個函數,因爲我稱這個函數有一個目標作爲參數...有沒有辦法創建一個新的目標? Ajaxrequesttarget.get()在這裏不起作用,因爲我使用了wicket 6.11 – RichieK
AjaxRequesttargets(ART)在使用它的方法中可用。這意味着你不應該試圖從靜態方法中「獲得」ART,而應該從覆蓋的方法參數中獲得ART。然後向目標添加需要更新的所有組件。如果組件在調用時不可見(不在標記中),則需要使用上述方法生成佔位符,以使wicket能夠找到組件。 – thg