java - Wicket:模板中的条件显示

标签 java templates wicket

你好, 我只想在特定条件下(例如,只有当我有数据填充它时)才显示我的 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/

相关文章:

c++ - 为什么在这种情况下需要模板消歧器?

java - Wicket 将表单转换为 div,将面板转换为表单

java - 限制 JTextField 的字符数

java - 为什么我得到 "Comparison method violates its general contract"

c++ - 检查模板中 nullptr 的函数指针以获取任何类型的可调用

templates - 为什么在 play 2 scala 模板中构造的 html 会生成空的 Html 案例类

java - 如何包含 Wicket Palette 的默认 css 文件?

java - Wicket:单独表单内的两个 AjaxButton 问题

java - 由于发生无法启动 Activity ComponentInfo 错误,无法将注册按钮重定向到注册页面

java - 错误: throw new UnsupportedOperationException("Method not decompiled