我在 html 中有播放器表:[table]
当它为空时,如何隐藏或不呈现此表?我尝试在 java 代码中添加 if 条件,并且仅当存在某些值时才将此表添加到页面中,但随后 wicket 抛出异常,他无法找到具有此 ID 的组件。那么我该怎么做呢?
如果没有可用的日期,您可以覆盖 isVisible() 函数并返回 false。但是,这个函数会被调用几次,所以如果确定数据是否可用(比如访问数据库),你可以调用 setVisible(boolean) 函数。
如果没有可用数据,另一种选择是用 EmptyPanel 交换中继器。
它抛出异常是因为 html 标记期望组件存在。即你必须添加它。
如果要隐藏整个面板,则使用 EmptyPanel 将隐藏整个面板。
如果面板中只有一个组件,您也可以使用 component.setVisible(false) 隐藏它。
您可以使用已在 java 中使用的相同条件,但不是不将表格添加到页面,而是使用 table.setVisible(false)。
另一种方法是覆盖 setVisible() 和 isVisible() 方法,但我认为不建议这样做(参见此处)
希望这可以帮助
正如其他用户指出的那样,不建议覆盖 isVisible() ,因为在渲染组件之前会多次调用此函数。您应该改写 onConfigure() 并将决定您的表是否必须可见的代码放入其中。onConfigure() 每个请求只调用一次。