Wicket:模板中的条件显示

the*_*ega 8 java templates wicket

Hy,我想在某个条件下显示我的wicket模板的某个部分(例如div)(例如,只有我有数据填充它).问题是:

如果我只是添加了面板(填充div),如果我得到数据,每次调用没有数据的页面时都会抛出异常(因为引用的wicket-id没有添加到组件树中).

我想到的唯一解决方案是在没有数据的情况下添加一个空面板.这不是一个理想的解决方案,因为我在java代码中得到了一些不需要的代码,并且在我渲染的html中有很多空div.

那么是否有更好的解决方案只在条件下包含wicket模板的几个部分?

Kar*_*ell 5

虽然这是一个老问题,但这里可能是另一个解决方案: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);
}
Run Code Online (Sandbox Code Playgroud)

对我来说,这样做的好处是我可以防止在 //## 标记行中出现 NullpointerExc,并且我认为在这种情况下,wicket 的封闭功能对我来说看起来更难看。