我遇到了与AjaxTabbedPanel中动态删除选项卡相关的问题。它与删除当前选项卡时自动选择另一个选项卡有关。虽然它可以正常删除最后一个选项卡,但当您尝试删除第一个选项卡时,它之间的任何选项卡都会失败。似乎setSelectedTab(0)不执行任何操作,因为它已经是选定的选项卡(即使实际的选项卡实际上已被删除)。删除第一个选项卡将显示为选择了第二个选项卡,但内容是刚刚删除的选项卡。
对于下面这段适用于所有标签的代码,任何人都有一个很好的重写?
private class DeleteLink extends AjaxLink<Section> {
private static final long serialVersionUID = 1L;
public DeleteLink(String id, IModel<Section> model) {
super(id, model);
}
@Override
public void onClick(AjaxRequestTarget target) {
// add tabbed panel to target refresh
if(target != null) {
target.add(getPage().get("container"));
}
Section section = getModelObject();
Form form = section.getForm();
form.deleteSection(section);
TabbedPanel<ITab> tabPanel = findParent(TabbedPanel.class);
if (tabPanel != null) {
int index = tabPanel.getSelectedTab();
if(index > 0)
tabPanel.setSelectedTab(index-1);
else
tabPanel.setSelectedTab(index);
}
}
}
我已经尝试选择索引+ 1并显示正确的内容,但它会将选项卡呈现为就像选中后面的选项卡一样。 (因此,删除第一个选项卡,将显示第二个选项卡的内容,但选择了第三个选项卡。)