2

私は GWT の経験があります。GWT では、 widget.setVisible() メソッドがstyle="display:none"ウィジェットにスタイルを追加します。しかし、vaadin のコンポーネントはそうではありません。firebug で確認しましたが、コンポーネントの visible をfalseに設定している間、コンポーネントが表示されません。なんで ?

入れないのではなく、隠しスタイルも持つべきだと思います。vaadin のコードはサーバー側であることがわかりました。しかし、非表示 (スタイル表示を none に設定)したい場合、css を使用する代わりにこれを達成する方法はありますか?

コンポーネントを追加しない場合とsetVisible(false)の違いの概念がわかりませんか?

4

2 に答える 2

4

既にお気付きのように、目に見えないコンポーネントはサーバーからブラウザーに転送されず、ブラウザーの観点からはコンポーネントは存在しません。このアプローチには次の利点があります。

  1. サーバーからクライアントに転送するデータが少ない
  2. セキュリティ: Firebug などのツールがブラウザーに存在しないため、ユーザーは非表示コンポーネントの生成された HTML を検査できません。

したがって、基本的にブラウザの観点からは、UI にまったく追加しないのと同じことです。ただし、通常は、コンポーネントを親から追加および削除するよりも、コンポーネントの可視性を切り替える方が簡単です。

CSS でコンポーネントを非表示にしたい場合は、独自のテーマを定義し、そこにスタイルを追加することで実現できます。addStyleName次に、メソッドを使用して非表示にするコンポーネントのスタイルを適用するだけです。

于 2014-08-01T16:59:21.173 に答える
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.

したがって、ドキュメントには、目に見えないコンポーネントは見えないと書かれています。

于 2014-08-01T05:11:21.167 に答える