У меня возникла проблема с созданием новых вкладок в Wicket во время выполнения. Когда я добавляю новую вкладку в список вкладок моего AjaxTabbedBar, я не вижу никаких изменений на экране, может быть, вы можете мне помочь?Wicket Создать новые вкладки в Runtime
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()), это ошибка?
я также пытался обновить мой TabBar с AjaxRequestTarget, но приходят различные ошибки: не может обновить страницу или компонент с идентификатором [[tabs28]] не были найдено при попытке выполнить ...
Надеются, что вы может помочь мне.
Редактирование: Я нашел некоторых людей в Google с аналогичной проблемой, они попытались использовать LoadabledetachableModel ... Я просто не знаю, как включить это, потому что его абстрактный текст, и я действительно не знаю, как заполнить методы этой модели хочет использовать ...
hm Я добавил setOutputMarkupPlaceholderTag (true) в myTabBar, но ничего не изменилось, такая же ошибка ... – RichieK
один вопрос об ajaxrequesttarget: i также пытался получить это через параметр, когда я вызываю эту функцию, потому что функция, где я называю это, имеет цель как параметр ... есть ли способ создать новую цель? Ajaxrequesttarget.get() не работает здесь, потому что я использую wicket 6.11 – RichieK
AjaxRequesttargets (ART) доступны в методах, которые его используют. Это означает, что вы не должны пытаться «получить» АРТ от статического метода, а скорее от параметров перезаписанного метода. Затем вы добавляете к цели все компоненты, которые нуждаются в обновлении. если компонент невидим (не в разметке) во время вызова, вам нужно создать заполнители с вышеупомянутым методом, чтобы позволить калитки находить компоненты. – thg