問題タブ [vaadin7]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
vaadin - 編集モードのテーブルで遅延読み込みが非常に遅いのはなぜですか?
合計で 15 列と約 4000 行のテーブルがあります。一部の列を編集可能にする必要があるため、これには TableFieldFactory を使用しています。
問題は、編集モードに入ると、読み込みが非常に遅くなることです。下にスクロールすると、遅延読み込みによって別のバッファーが読み込まれ、テーブルが再描画されるまでに最大 20 秒かかることがあります。
編集可能な列が 1 つしかない場合でも、ロードが耐えられないほど遅くなります。
1 回の遅延読み込みで約 500 ~ 1000 行が読み込まれるため、createField() はおそらく 7500 ~ 15000 回呼び出されますが、これは Vaadin の既知の制限ですか、それとも何か間違っていますか? 非常に多くの列がある場合、そもそも TableFieldFactory を使用すべきではないのでしょうか?
これらのクレイジーなバッファロード時間を取得せずに、言及されたテーブルを実装するより良い方法があるかどうかは誰にも分かりますか?
前もって感謝します!
vaadin - IE8 の一貫性のないヘッダーと列の幅
IE8 では、テーブルの列とヘッダーが正しく機能しません。列は、内部の最も広いデータに必要なスペースだけを取得しており、列は元のサイズになっているようです。列ヘッダーをクリックまたはサイズ変更すると、事態はさらに悪化します。
また、テーブルに多くの行 (1000 以上) がありますが、スクロールバーが表示されないため、すべてのデータを表示することさえできません。
これは、IE8 でどのように見えるかのイメージです。
記録として、すべてが Chrome、Firefox、IE9 で問題なく動作します (おそらく IE10 でも同様ですが、テストする機会はありません)。
これを修正する方法を知っている人はいますか?
java - クラスがインスタンスの作成順序に依存する DI の設計方法
これはかなり標準的な質問のように感じられ、おそらく以前に尋ねられたことがありますが、言葉で定義するのが難しいため、見つけるのが難しいと感じました. これが重複している場合は、先に進んでリダイレクトしてください!
私は Vaadin を使用してこの Web アプリを構築していますが、Vaadin の魔法によってこれを解決するより良い方法がない限り、目前の問題には関係ありません。
私は3つのクラスを持っています:
- テーブル
- FilterGenerator
- 容器
私の「デザイン」は次のようになります。
- コンテナーは、コンストラクターでいくつかのプロパティ (列ヘッダー) をそれ自体に追加します。
- FilterGenerator @Inject the Container (コンテナから個別のアイテムを取得するコンテナの getDistinct() メソッドを使用するため - それらをフィルタの ComboBox に適切に表示するため)
- テーブル@Inject FilterGenerator ( table.setFilterGenerator(filterGenerator) にするため)
- Table @Inject the Container を呼び出し、コンテナーの addItems() メソッドを呼び出して項目をコンテナーに追加します。
- その後、テーブルはコンテナをデータソースとして追加します
何が起こるのですか?
ここで必要なのは、列ヘッダーに ComboBox があり、フィルター処理する個別の値を示すテーブルです。
私が得たのは、列ヘッダーに ComboBox を含むテーブルで、ComboBox に項目がないため、ComboBox には何も表示されません。
FilterGenerator が Containers getDistinct() メソッドを呼び出すと、空のマップ<Column, items>
back が取得されるため、これは驚くべきことではありません。 なぜなら、FilterGenerator で @Inject を実行した時点で、Table は Containers の addItems() メソッドを呼び出していないためです。そのため、コンテナはこの時点で空になります。
質問
コンポーネント (FilterTable) が 2 番目のコンポーネント (コンテナー) から何かを取得するようにしたい場合、3 番目のコンポーネント (テーブル) が前述のコンポーネントの両方を @Inject し、2 番目のコンポーネント (コンテナー) が重要である場合、このアプリケーションをどのように設計すればよいですか? ) 最初のコンポーネント (FilterGenerator) がそこから何かを取得したときに、すでに初期化されていますか?
私はできた:
テーブルで、単純に
new
FilterGenerator を作成します。これは機能しますが、あまり良くありません。たとえば、他のコンポーネントが FilterGenerator を使用したい場合はどうなりますか?インスタンスを正しい順序で「手動で」作成するには、xml-configuration に戻ります。これはおそらく機能しますが (私の記憶が正しければ)、xml ファイル内の要素の順序に応じてインスタンスを作成することは、私にはあまり良くありません。
コードで ApplicationContext.getBean() を使用して、「プログラムによるインジェクション」を使用します。これはおそらく上記の代替案よりもさらに悪いでしょうか?
この三角形のドラマを解決する方法について何か良い提案はありますか?
関連するコードは次のとおりです。
テーブル
コンテナ
フィルタージェネレーター
vaadin - 新しいデータで IndexedContainer をリロードしようとすると NullPointerException が発生する
新しい新鮮なデータで IndexedContainer を「リロード」しようとしていますが、NPE を取得しています。
addItemsToContainer(List<Person> persons)
コンテナにデータを入力するために使用する方法があります。
Person リストに 100 個の person オブジェクトが含まれているとします。最初に を呼び出すaddItemsToContainer(List<Person> persons)
と、コンテナが読み込まれ、すべて問題ありません。
ただし、メソッドを2回目に呼び出すと、NullPointerException
setValue() で a が取得されます。
今、すべてのアイテムを削除するように見えますが、すべてremoveAllItems()
のItemIdはコンテナーに残されています。これは、メソッドを 2 回目に呼び出したときに、最初に自動生成された ItemId が であることを意味します101
。これが NPE を取得する理由ですか? デバッグすると、 から適切な値が返されることがわかりますperson.getId()
。
私の addItemsToContainer メソッド
スタックトレース
( ExampleMainTableContainer.java:94
addItemsToContainer メソッドでマークしたステートメントです)
vaadin - Vaadin テーブル行の特定の列をクリックしたときの応答
私はVaadinが初めてです。私は3つの異なる見解を持っています。View1 には、column1、column2 を持つテーブルがあります。特定のテーブル行について、列 1 をクリックするとビュー 2 に移動し、列 2 をクリックするとビュー 3 に移動できるようにしたいと考えています。ValueChanged イベントを使用して、行のクリック全体に応答できますが、行の特定の列のクリックを処理するにはどうすればよいですか? 行クリックを処理する方法は次のとおりです
助けてください