如何在wicket中获取当前页面

时间:2014-12-30 14:16:41

标签: wicket

我正在尝试创建动态导航链接,其中应突出显示当前页面链接但我无法获得所需的结果。我正在使用listview来显示我的菜单项,但无法突出显示当前页面链接。

请建议必要的更改

public class SearchPage extends WebPage implements Serializable {

private static final long serialVersionUID = 1L;
Logger log = Logger.getLogger(SearchPage.class);
public SearchPage() {

    List<HeaderListItems> headerPOJOItems = new ArrayList<HeaderListItems>();
    HeaderListItems searchHLI = new HeaderListItems();

    searchHLI.setLabel("Search");
    searchHLI.setDestPage(SearchPage.class);
    headerPOJOItems.add(searchHLI);

    HeaderListItems jobsHLI = new HeaderListItems();

    jobsHLI.setLabel("Jobs");
    jobsHLI.setDestPage(Jobs.class);
    headerPOJOItems.add(jobsHLI);

    HeaderListItems urlHLI = new HeaderListItems();

    urlHLI.setLabel("URL");
    urlHLI.setDestPage(URL.class);
    headerPOJOItems.add(urlHLI);

    HeaderListItems syssettingsHLI = new HeaderListItems();

    syssettingsHLI.setLabel("System Settings");
    syssettingsHLI.setDestPage(Settings.class);
    headerPOJOItems.add(syssettingsHLI);

    HeaderListItems usersHLI = new HeaderListItems();

    usersHLI.setLabel("Users");
    usersHLI.setDestPage(User.class);
    headerPOJOItems.add(usersHLI);

    HeaderListItems logoutHLI = new HeaderListItems();

    logoutHLI.setLabel("Logout");
    logoutHLI.setDestPage(WebApp.get().getHomePage());
    headerPOJOItems.add(logoutHLI);

    add(new ListView("headerlistview", headerPOJOItems) {

        @Override
        protected void populateItem(ListItem item) {
            final HeaderListItems headerlistitems = (HeaderListItems) item
                    .getModelObject();
            log.info("Label: " + headerlistitems.getLabel() + " dest: "
                    + headerlistitems.getDestPage());
            Link newlink = new Link("newlink") {

                @Override
                public void onClick() {

                    setResponsePage(headerlistitems.getDestPage());

                }

            };
            newlink.add(new Label("newlabel", headerlistitems.getLabel()));
            newlink.add(new AttributeModifier("class",
                    new AbstractReadOnlyModel() {

                        @Override
                        public Object getObject() {
                            // TODO Auto-generated method stub
                            return getPage().getClass().equals(
                                    headerlistitems.getDestPage()
                                            .getClass()) ? "activeitem"
                                    : AttributeModifier.VALUELESS_ATTRIBUTE_REMOVE;
                        }
                    }));
            item.add(newlink);

        }


    });
}

列表是pojo项目列表。我的pojo有两个字段label(String)和destPage(Class)

我的标记:

<html xmlns:wicket="http://wicket.apache.org">
<head>
<title>Search Page</title>
<link href="css/design.css" type="text/css" rel="stylesheet" />
</head>
<body>
    <div id="container">
        <div class="header">
            <div class="header_tab1">
                <p align="center">Logo</p>
            </div>
            <div class="header_tab2">&nbsp;</div>
            <div class="header_tab3">
                <table width="100%">
                    <tr>
                        <td wicket:id="headerlistview">
                            <ul>
                                <li><a href="#" wicket:id="newlink"><span
                                        wicket:id="newlabel"></span></a></li>
                            </ul>
                        </td>
                    </tr>
                </table>
            </div>
        </div>

    </div>



</body>
</html>

我有一个CSS类activeitem,我在属性修饰符

中使用它

提前致谢

1 个答案:

答案 0 :(得分:1)

将班级比较更改为:

return getPage().getClass().equals(
    headerlistitems.getDestPage()) ? "activeitem" : AttributeModifier.VALUELESS_ATTRIBUTE_REMOVE;

下一步是将导航解压缩到自己的面板中,这样您就可以在页面中重复使用。

祝你好运。