你好, 我只想在特定条件下(例如,只有当我有数据填充它时)才显示我的 Wicket 口模板的特定部分(例如一个 div)。问题是:
如果我只在获得数据时添加面板(填充 div),则每次调用没有数据的页面时都会抛出异常(因为引用的 wicket-id 未添加到组件树中)。
我想到的唯一解决方案是在没有数据的情况下添加一个空面板。这不是一个理想的解决方案,因为我在 java 代码中得到了一些不需要的代码,并且在我呈现的 html 中得到了许多空的 div。
那么是否有更好的解决方案来仅在条件下包含 wicket-template 的多个部分?
最佳答案
虽然这是一个老问题,但这里可能还有一个解决方案:wicket:enclosure (和 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 的封闭功能对我来说看起来更难看。
关于java - Wicket:模板中的条件显示,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1242105/