2010-11-29 15 views
3

私はvaadinを初めて使っています。メモリに読み込むことができない大量のデータセットに対してオートコンプリート(実際には、Googleの提案と同じように)を行う代わりに、すべてのキーイベントでJPAクエリを実行する方法テキストフィールドやコンボボックスでキーイベントをキャプチャすることは可能ですか?vaadinでオートコンプリート?

乾杯

+0

を照会するための入力用

「をここにあなたのクエリを入力し」最小の長さのようなNミリ秒

プレースホルダーテキストの入力を終了まで待ちます(もし可能であれば)入力されているため、返された巨大なリストは得られません。また、ユーザーに示唆の完全なセットを表示しないでください。オートコンプリートに関する一般的な考え –

+0

http://jtechnoprojects.blogspot.com/2011/08/style-definitions-table.html –

答えて

3

Henrik PaulのSuperImmediateTextFieldは、クライアントからサーバーへのポスト遅延を秒単位で設定できるVaadinアドオンです。そこから、一般的なJavaスタックを使用して、できるだけスムーズにフローを取得します。キャッシング、JPAリクエストなどがあります。数秒の遅れは、サーバー側への負荷を少なくともわずかに軽減します。

0

あなたはこのlinkは役に立ちかもしれません。私はこれが6.5で修正されていると思います。確認したい場合はaddonもあります。 > JSON - - > vaadinサーブレット - >サービス(春/ EJB/POJOまたは何でも) - > JPA - >クエリ - >結果リスト(巨大かもしれ

あなたはこの

しかしフィールドの値を考慮する必要があります最初は)

と、このバックすべてのキーを押すためのブラウザのすべての方法...

は、エンドユーザのタイピングのスピードを考えます。 1回目のキーストロークの応答がサーバーから戻ってくるまでに、ユーザーは単語全体を完了している可能性があります。

0

カスタムクライアント側のウィジェットを作成したり、別のアドオンを含めない場合、あなたはそれがデータベースからの提案をロードするためにVaadinのコンボボックスを少し微調整することができます。サブクラスcom.vaadin.ui.ComboBox

  1. と独自の実装とその保護方法 コンボボックス#buildFilter()を上書きする:あなたは、基本的にそれを達成するために3つのことを行う必要があります。
  2. 非常に 制限付き機能を持つcom.vaadin.data.Container.Filterインターフェイスを実装してください:あなたのフィルタは、現在のユーザー入力 を転送する必要があります。
  3. 実際のフィルタロジック を実行するcom.vaadin.data.Containerの実装を記述します。

詳しくは、in a blog postで説明しました。

0

多分このアドオンをチェックアウト:https://vaadin.com/directory#!addon/suggestbox-add-on

は付属しています:例えば、サーバ通信用

遅延を、ユーザーはあなたがわずか3かそこら文字の後にオートコンプリート機能を開始することをお勧めしますサーバー