如何在wicket中获取当前页面

如何在wicket中获取当前页面,wicket,Wicket,我试图创建动态导航链接,其中当前页面链接应突出显示,但我无法获得预期的结果。我正在使用listview显示菜单项,但无法突出显示当前页面链接 请提出必要的修改建议 public class SearchPage extends WebPage implements Serializable { private static final long serialVersionUID = 1L; Logger log = Logger.getLogger(SearchPage.class); pub

我试图创建动态导航链接,其中当前页面链接应突出显示,但我无法获得预期的结果。我正在使用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);

        }


    });
}
公共类SearchPage扩展网页实现可序列化{
私有静态最终长serialVersionUID=1L;
Logger log=Logger.getLogger(SearchPage.class);
公共搜索页(){
List headerPOJOItems=new ArrayList();
HeaderListItems searchli=新的HeaderListItems();
searchli.setLabel(“搜索”);
searchli.setDestPage(SearchPage.class);
添加(searchli);
HeaderListItems jobsHLI=新的HeaderListItems();
jobsHLI.setLabel(“作业”);
jobsHLI.setDestPage(Jobs.class);
总部项目添加(jobsHLI);
HeaderListItems urlHLI=新的HeaderListItems();
urlHLI.setLabel(“URL”);
urlHLI.setDestPage(URL.class);
添加(urlHLI)标题项目;
HeaderListItems syssettingsHLI=新的HeaderListItems();
syssettingsHLI.setLabel(“系统设置”);
syssettingsHLI.setDestPage(Settings.class);
headerPOJOItems.add(syssettingsHLI);
HeaderListItems usersHLI=新的HeaderListItems();
usersHLI.setLabel(“用户”);
usersHLI.setDestPage(User.class);
headerPOJOItems.add(usersHLI);
HeaderListItems logoutHLI=新的HeaderListItems();
logoutHLI.setLabel(“注销”);
logoutHLI.setDestPage(WebApp.get().getHomePage());
添加(logoutHLI)的项目负责人;
添加(新列表视图(“headerlistview”,HeaderProject项目){
@凌驾
受保护的void populateItem(列表项){
最终标题列表项标题列表项=(标题列表项)项
.getModelObject();
log.info(“Label:+headerlistitems.getLabel()+”dest:“
+headerList.getDestPage());
Link newlink=新链接(“新链接”){
@凌驾
公共void onClick(){
setResponsePage(headerList.getDestPage());
}
};
add(新标签(“newlabel”,headerlistitems.getLabel());
添加(新属性修改器(“类”,
新的AbstractReadOnlyModel(){
@凌驾
公共对象getObject(){
//TODO自动生成的方法存根
返回getPage().getClass().equals(
headerlistitems.getDestPage()
.getClass())?“activeitem”
:AttributeModifier.VALUELESS\u ATTRIBUTE\u REMOVE;
}
}));
添加(新链接);
}
});
}
列表是pojo项的列表。我的pojo有两个字段label(字符串)和destPage(类)

我的加价:

<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


提前感谢

将班级比较更改为:

return getPage().getClass().equals(
    headerlistitems.getDestPage()) ? "activeitem" : AttributeModifier.VALUELESS_ATTRIBUTE_REMOVE;
下一步是将导航提取到它自己的面板中,以便您可以在页面中重用它

祝你好运