在Wicket AjaxTabbedPanel中动态删除选项卡

时间:2014-09-12 07:38:40

标签: java wicket

我遇到了与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并显示正确的内容,但它会将选项卡呈现为就像选中后面的选项卡一样。 (因此,删除第一个选项卡,将显示第二个选项卡的内容,但选择了第三个选项卡。)

0 个答案:

没有答案