菜单建设 - Wicket框架

时间:2017-04-10 16:07:50

标签: wicket

我正在使用wicket框架为我的应用程序构建一个两级菜单。使用ListView#populateItem重绘标记(SubMenuPanel.html)并且无法显示埋在SubMenuPanel.html中的标记标记内的菜单项。以下代码 -

HTML:

<div wicket:id="navMenu"></div>

Main.java:

NavigationMenu navigationMenu = new NavigationMenu("navMenu", navigationMenuAdapter);
add(navigationMenu);

NavigationMenu.java

public NavigationMenu(final String id, final NavigationMenuAdapter adapter)
{
    super(id);
    this.adapter = adapter;
    add(new SubMenuPanel("mainMenu", adapter.getNavigationMenus(this)));
}

SubMenuPanel.java

public SubMenuPanel(final String id, List<NavigationMenuItem> list)
{
    super(id);
    add(new Rows("firstLevel", list));
    setVersioned(false);
}

private static class Rows extends ListView<NavigationMenuItem>
{
    private static final long serialVersionUID = 1L;

    public Rows(String name, List<NavigationMenuItem> list)
    {
        super(name, list);
    }

    @Override
    protected void populateItem(ListItem<NavigationMenuItem> listItem)
    {
        Object modelObject = listItem.getDefaultModelObject();

        WebMarkupContainer rowAnchor = new WebMarkupContainer("firstLevelLink");
        rowAnchor.add(new Label("firstLevelLabel", ((NavigationMenuItem) modelObject).getName()));
        rowAnchor.add(new AttributeAppender("onclick", new Model("handleMenuClick()");
        listItem.add(rowAnchor);

        listItem.add(new SubMenuPanel("secondLevelMenu", ((NavigationMenuItem) modelObject).getChildMenuItem()));

    }
}

SubMenuPanel.html

<body>
<wicket:panel>
     <li wicket:id="firstLevel">    
        <a wicket:id="firstLevelLink" class="dropdown-toggle" aria-expanded="true" data-toggle="dropdown" href="javascript:void(0);" >
            <span wicket:id="firstLevelLabel"></span>
        </a>

        <ul wicket:id="secondLevelMenu" class="dropdown-menu">

        </ul>
    </li>                         
</wicket:panel>

工作版 enter image description here

非工作 enter image description here

0 个答案:

没有答案