2011-02-02 12 views
4

現在、RichfacesのdataTableは、すべてのデータを含むバッキングBeanにバインドされています。このテーブルはRichfacesデータスクロールにバインドされています。リッチの動的ページ分割:dataTable/rich:大規模データセットを使用するデータスケーラー

ユーザーは、データの間にスクロールを入力できます。

入力されたテキストに基づいて、表示されるデータテーブルの結果を動的に更新するテキストボックスもあります。これは、dataTableとdatascrollerをkeyUpイベントで再レンダリングします。

バインドするバッキングBeanは、最初にすべてのデータをいくつかのデータベーステーブルから取得します。このデータは、ユーザーが通常のポストリクエストをサーバーに送信するときに取得され、このリクエストの結果はすべての後続のAjax関連のクエリーに使用されます(結果はオブジェクトのリストとして保存されます)。

私は、データセットが時には膨大になり、10万レコードになるという問題があります。 これにより、サーバーへの最初の要求が非常に長くかかることがあります。

私が検討している解決策は、最初のユーザーポート要求に対して、1つのスレッドで少量のデータを取り戻すことです。このデータはデータテーブルに表示され、メインスレッドはバックグラウンドで動作し、大量のデータを戻します。

これは実現可能ですか?メインスレッドが新しいデータを取り戻すので、私のdatatable/datascollerを更新することは可能でしょうか?それは難しいだろうか?

データベースとクエリの最適化が検討されているため、ここで重要な改善はありません。

おかげで、事前に

+0

'私は、データセットが時々巨大になり、10万レコードになるという点で問題があります。これはサーバーへの最初のリクエストに非常に長い時間を要します。 'ページングを使用した場合、最初はm行しか最初にフェッチされません。 –

+0

Seam Application Frameworkには、無料で使用できる組み込みのページングがあります。しかし、プロジェクトにシームを追加する必要があります。 (これはJSFとRichfacesを使用している場合の素晴らしいアイデアです)。 http://docs.jboss.org/seam/2.2.1.CR1/reference/en-US/html/framework.html#d0e8405 –

+0

Jigar Joshi - あなたは私の質問を誤解していると思います(または、私はそれを表現していません正しく)。最初、ユーザーはサーバー(標準のHttp Post、Ajaxではない)に要求を送信し、データベースからデータを取り出し、すべてのデータをオブジェクトのリストに格納します。ページは、dataTableとdataScrollerにバインドされたオブジェクトのリストと共にユーザーに表示されます。この新しいページから、データに対するajaxリクエストを実行できます。 –

答えて

2

あなたはSeam Application Framework's Query objectが提供している正確に何を必要とするように思える(私はこれはおそらく答えるために簡単な質問ではありません知っています)。

Seamを使用したくない場合は、ソースを表示したり、そのやり方をコピーしてアイデアを盗むだけです。

は、基本的に何をする必要があるユーザーを押しnext, previous, first, last etc

関連する問題