2

残念ながら、OpenFaces Datatableには、PrimefacesやIceFacesとは異なり、まだエクスポート機能がありません。エクスポートは簡単ですが、IceFacesまたはprimefacesデータテーブルのフィルタリングは簡単ではありませんが、primeFacesのフィルタリングはJSF DataModelでは機能しません(悲しいですが本当です)。

OpenFaces DataTableフィルタリングの使用は簡単で、とても便利で強力です。しかし、フィルタリングしたデータテーブルをCSVMSExcelなどの形式にエクスポートしたいエンドユーザーはどうでしょうか。

OpenFacesのすばらしいDmitryから、ヒントが得getDisplayedRowDatas()られました。OpenFacesDataTableメソッドを使用してください。データテーブルから現在表示されている行を取得し、Itextなどのthridライブラリを使用してPDFでエクスポートします。

私の頭の中では、これは次のようになります。

  • この目的のためにバッキングBeanを作成します。
  • クラスパスにApachePOIの3番目のライブラリを追加します
  • Apache POIを使用してコードを記述し、そのメソッドでOpenFacesデータテーブルのコンテンツをエクスポートしますgetDisplayedRowsDatas()-しかし、このメソッドは列のヘッダーの名前を返さないのではないかと思います-または、OpenFaces DatatableによってレンダリングされたHTMLテーブルをバッファリングされた文字列として取得し、Apacheを使用しますバッファでストリーミングされたExcelファイルを生成するPOI。

最近出会ったMyFacesの例:MyFaces Datatable Export Exampleでは、開発者はMyfacesコンポーネント<t:buffer value=#{myExportBean.myBufferString}> datatable here </t:buffer />を使用して、データテーブルのコンテンツをバッファリングされた文字列に変換します。これにより、作業が簡単になります。残念ながら、JSFコアにはそのようなコンポーネントはありません。

誰かが以前にこれに出くわしたことがありますか?ヘルプまたはより良い代替案は大歓迎です。

4

1 に答える 1

5

現在のナイトリービルドで利用できる実験的なDataTableエクスポートAPIを確認できます。時の試練に耐えるなら、このAPIを公式に宣言します。現在のところ、CSVエクスポートのみが利用可能ですが、他の形式の独自のエクスポーターを作成することもできます。アクションハンドラーを機能させるために配置する必要のあるコードは次のとおりです。

DataTable myTable = Faces.component("form:myTable", DataTable.class);
myTable.export(new CSVTableExporter());

テーブルに現在表示されているすべての行と列のデータをエクスポートします(現在、ページ付けされたテーブルの現在のページのみがエクスポートされます)。

于 2011-06-29T16:58:29.567 に答える