虽然这是一个老问题,但这里可能是另一个解决方案:wicket:enclosure (and this )
更新:现在我自己需要这个功能(对于jetwick)。我正在使用 WebMarkupContainer 一个用于已登录状态,一个用于已登录状态并设置正确的可见性:
if (loggedIn()) {
WebMarkupContainer loggedInContainer = new WebMarkupContainer("loggedIn");
//## do something with the user
User user = getUserSomeWhere();
loggedInContainer.add(new UserSearchLink("userSearchLink"));
add(loggedInContainer);
add(WebMarkupContainer("loggedOut").setVisible(false));
} else {
add(new WebMarkupContainer("loggedIn").setVisible(false));
WebMarkupContainer loggedOutContainer = WebMarkupContainer("loggedOut");
loggedOutContainer.add(new LoginLink() {...});
add(loggedOutContainer);
}
这对我来说的好处是我在 //## 标记的行中阻止了 NullpointerExc,并且在我认为这种情况下,wicket 的封闭功能对我来说看起来更难看。