【问题标题】:How does Component.setVisible() method work?Component.setVisible() 方法是如何工作的?
【发布时间】:2014-08-01 04:56:02
【问题描述】:

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

我认为应该也有隐藏样式而不是不包含。我意识到 vaadin 的代码是服务器端的。但有时,如果我只想隐藏(将样式显示设置为无),有没有办法完成这个而不是使用 css ?

我不明白 without add componentsetVisible(false) 有什么区别?

【问题讨论】:

    标签: vaadin vaadin7 vaadin8 vaadin6


    【解决方案1】:

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

    1. 从服务器传输到客户端的数据更少
    2. 安全性:用户无法使用 Firebug 等工具检查不可见组件生成的 HTML,因为浏览器上不存在这些工具。

    所以基本上从浏览器的角度来看,你根本不将它添加到 UI 中是一样的。但通常切换组件的可见性比从其父级添加和删除它更容易。

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

    【讨论】:

    • @Henri,如果组件 A 具有三个组件 x,y,z 并且 x 具有 x.setVisible(false) 将 A.getComponentCount() 是 3 还是 2?
    • @MahendranAyyarsamyKandiar 3
    【解决方案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 所说,不可见的组件是不可见的。

    【讨论】:

    • 是的,对于 component.setVisible() 方法的工作原理是完整的,但我想知道 不添加组件和 setVisible(false) 之间有什么区别的概念
    • 还有有没有办法完成这个而不是使用css
    • @Cataclysm 在客户端视觉上(和 html/state-wise)?没有任何。但是如果您添加它并且 visible=false 它,该组件将添加到父级。
    猜你喜欢
    • 2013-03-11
    • 2019-05-20
    • 2012-04-21
    • 2016-07-26
    • 2018-06-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多