Component.setVisible()方法如何工作?

时间:2014-08-01 04:56:03

标签: vaadin vaadin7 vaadin8 vaadin6

我对GWT有一些经验。在GWT中,widget.setVisible()方法将向窗口小部件添加style="display:none"样式。但是vaadin的成分不会。我用firebug检查过,在设置 false 的组件时,我无法看到我的组件。为什么?

我认为应该也有隐藏的风格而不是不包含。我认为vaadin的代码是服务器端。但有时候,如果我想隐藏(将样式显示设置为无),无论如何都要完成此操作而不是使用css?

我不明白不添加组件 setVisible(false)之间的区别概念?

2 个答案:

答案 0 :(得分:4)

正如您已经注意到的那样,不可见组件不会从服务器传输到浏览器,从浏览器的角度来看,该组件不存在。这种方法必须带来好处:

  1. 从服务器传输到客户端的数据较少
  2. 安全性:用户无法使用Firebug等工具检查隐藏组件生成的HTML,因为浏览器上不存在这些工具。
  3. 所以基本上从浏览器的角度来看,你根本没有将它添加到UI中是一回事。但通常更容易切换组件的可见性,而不是从其父级添加和删除它。

    如果您想使用CSS隐藏组件,可以通过定义自己的主题并为其添加样式来实现。然后,只需使用addStyleName方法为要隐藏的组件应用样式。

答案 1 :(得分:2)

SETVISIBLE设置组件的可见性。

Visible components are drawn in the user interface, while invisible ones are not. The effect is not merely a cosmetic CSS change - no information about an invisible component will be sent to the client. The effect is thus the same as removing the component from its parent.

因为documentation表示不可见的组件不可见。