wicket:与@AuthorizeInstantiation的链接和页面

时间:2014-08-23 21:45:24

标签: wicket wicket-1.6

我有一个导航栏,如:

<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

我该怎么做? TIA!

1 个答案:

答案 0 :(得分:3)

使用wicket添加链接。然后使用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>