繁体   English   中英

如何不通过检票口渲染组件

[英]How to not render a component in wicket

我在html中有播放器表:[table]

当该表为空时如何隐藏或不显示该表? 我尝试在Java代码中有条件的情况下添加,并且仅在有某些值的情况下将此表添加到页面中,但是检票口将引发异常,他无法找到具有此ID的组件。 那我该怎么做呢?

您可以重写isVisible()函数,如果没有可用的日期,则返回false。 但是,此函数将被调用几次,因此,如果确定数据是否可用(例如,访问数据库),则可以调用setVisible(boolean)函数。

另一个选择是如果没有可用数据,则用EmptyPanel交换Repeater。

抛出异常是因为html标记期望该组件存在。 即您必须添加它。

如果要隐藏整个面板,则使用EmptyPanel将隐藏整个面板。

如果面板中只有一个组件,则还可以使用component.setVisible(false)将其隐藏。

您可以使用已经在Java中使用过的相同条件,但是可以使用table.setVisible(false)来代替不将表添加到页面中。

另一种方法是重写setVisible()和isVisible()方法,但是我不建议这样做(请参见此处

希望这可以帮助

正如其他用户所指出的那样,不建议重写isVisible(),因为在呈现组件之前会多次调用此函数。 相反,您应该重写onConfigure()并将决定表是否必须可见的代码放入其中。 每个请求仅调用一次onConfigure()。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM