2

我有一个导航栏,例如:

<nav>
    <ul>
        <wicket:link>
            <li><a href="Page1.html">Page1</a></li>
            <li><a href="Page2.html">Page2</a></li>
            <li><a href="Page3.html">Page3</a></li>
        </wicket:link>
    </ul>
</nav>

这个面板工作得很好(使用匹配的 css)。

但是,Page3只有登录的用户才能访问。

@AuthorizeInstantiation("SIGNED_IN")
public class Page3 extends MyPage {
    // ...
}

当用户登录时,一切都按预期进行。

Navigation: Page1 Page2 Page3

但是当用户未登录时,我希望Page3不会成为导航栏的一部分(因为它不可访问)。

Navigation: Page1 Page2

我怎样才能做到这一点?蒂亚!

4

1 回答 1

3

使用检票口添加您的链接。然后使用 IAuthorizationStrategy 检查是否可以实例化链接所指的页面。如果没有,请隐藏链接:

IAuthorizationStrategy strategy = getApplication().getSecuritySettings().getAuthorizationStrategy();
Link<?> page1link = new Link<Void>("page1") {
    @Override
    public void onClick() {
        setResponsPage(Page1.class);
    }
}
page1link.add(new Label("page1linklabel","Page 1"));
page1link.setVisible(strategy.isInstantiationAuthorized(Page1.class));
add(page1link);

您的链接的 html 如下所示:

<a href="#" wicket:id="page1"><span wicket:id="page1linklabel"></span></a>
于 2014-08-25T06:19:07.853 回答