导航栏中的wicket-bootstrap breadcrumb

时间:2015-12-13 00:27:50

标签: java html css wicket

是否可以使用wicket-bootstrap将导航栏添加到导航栏?

BasePage.java

public BasePage(final PageParameters params) {
    super(params);
    add(createNavbar("navbar"));
    add(new Footer("footer"));
    add(newBreadcrumb("breadcrumb"));
}

protected Navbar createNavbar(String markupId) {
    Navbar navbar = new Navbar(markupId);

    navbar.setPosition(Navbar.Position.TOP);
    navbar.setInverted(true);

    navbar.setBrandName(Model.of("Title"));
    navbar.add(newBreadcrumb("breadcrumb"));

    return navbar;
}

protected Component newBreadcrumb(String markupId) {
    Breadcrumb breadcrumb = new Breadcrumb(markupId);
    breadcrumb.setActive(new BreadCrumbPanel("breadcrumbid", breadcrumb) {
        /**
         * 
         */
        private static final long serialVersionUID = 165186734860620567L;

        @Override
        public IModel<String> getTitle() {
            return Model.of("Home");
        }
    });
    return breadcrumb;
}

BasePage.html

<div wicket:id="navbar" class="bs-docs-nav">
    <ul wicket:id="breadcrumb"></ul>
</div>

但我仍然会收到错误,我无法在#navbar标记中添加任何内容

For Navbar Components only raw markup is allow in between the tags but not other Wicket Component.

1 个答案:

答案 0 :(得分:0)

Navbar组件正在与INavbarComponent作为孩子一起使用。

您应该执行以下操作:

Navbar navbar = new Navbar("id");
navbar.addComponents(new INavbarComponent() {
    @Override
    public Component create(String markupId) {
        return new NavbarButton(Page.class, Model.of("Link Name"));
    }

    @Override
    public Navbar.ComponentPosition getPosition() {
        return Navbar.ComponentPosition.LEFT;
    }
});

这取自样本模块中的IssuesPage

如果这没有帮助,那么您的最后一个选择是将痕迹仅仅放在标记中。但我想你需要控制active面包屑,所以这可能没什么帮助。

Bootstrap navbar是一个复杂的组件。他们将在ver.4中简化它。然后我希望它在Wicket-Bootstrap中也会更简单。