我有一个导航栏,如:
<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!
答案 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>