【问题标题】:Add CSS class to selected Wicket Tab将 CSS 类添加到选定的 Wicket 选项卡
【发布时间】:2021-06-02 07:23:01
【问题描述】:

我有几个 Wicket 选项卡,我需要将 CSS 类 "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;
            }
        });

这就是链接标记的样子

<a href="#" wicket:id="link"><span wicket:id="title">[[tab title]]</span></a>

此实现添加到两个选项卡 css 类,我需要以某种方式检查选项卡是否被选中

【问题讨论】:

    标签: java wicket


    【解决方案1】:

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

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

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

    【讨论】:

    • 谢谢!我实际上想知道为什么没有方法 TabbedPanel#setSelectedTabCssClass() 设置自定义 css 类而不是当前实现会更容易
    • 因为使用 setter TabbedPanel 必须将值存储到字段中,这会增加内存和序列化的 Java 对象大小。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-07-12
    • 1970-01-01
    • 2016-01-06
    • 2020-12-03
    • 2020-11-21
    • 1970-01-01
    相关资源
    最近更新 更多