是否可以使用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.
答案 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中也会更简单。