将 CSS class 添加到选定的 Wicket 选项卡

Add CSS class to selected Wicket Tab

我有几个 Wicket 标签,我需要添加 CSS class "text-primary"到当前选择的标签

        List<ITab> tabList = new ArrayList<>();
        tabList.add(new AbstractTab(new Model<>("Tab 1")) {
            @Override
            public Panel getPanel(String panelId) {
                return new TabPanel1(panelId);
            }
        });
        tabList.add(new AbstractTab(new Model<>("Tab 2")) {
            @Override
            public Panel getPanel(String panelId) {
                return new TabPanel2(panelId);
            }
        });
        add(new AjaxTabbedPanel<>("tabs", tabList) {
            @Override
            protected WebMarkupContainer newLink(String linkId, int index) {
                AjaxFallbackLink<Void> link = new AjaxFallbackLink<>(linkId) {
                    private static final long serialVersionUID = 1L;

                    @Override
                    public void onClick(Optional<AjaxRequestTarget> target) {
                        TabbedPanel<ITab> selectedTab = setSelectedTab(index);
                        ITab tab = tabList.get(index);
                        if (target.isPresent()) {

                            tab.getPanel(linkId);

                            target.get().add(selectedTab);
                        }
                        onAjaxUpdate(target);
                    }
                };
                link.add(AttributeAppender.append("class", "text-primary"));
                return link;
            }
        });

这是 Link

标记的样子
<a href="#" wicket:id="link"><span wicket:id="title">[[tab title]]</span></a>

此实现添加到两个选项卡 css class 我需要以某种方式检查是否选择了选项卡

您可以使用传递的参数 index 并将其与 selectedTab:

进行比较
if (index == getSelectedTab()) {
   link.add(AttributeAppender.append("class", "text-primary"));
}

也看看org.apache.wicket.extensions.markup.html.tabs.TabbedPanel#getSelectedTabCssClass()