次のように使用できるコンポーネントを作成したい:
<mc:chart data="#{bean.data}" width="200" height="300" />
where#{bean.data}
は、いくつかのオブジェクトのコレクション、チャート モデル オブジェクト、またはチャートとして表すことができるその他のものを返します (簡単に言えば、整数のコレクションを返すと仮定しましょう)。
このコンポーネントが次のような html を生成するようにします。
<img src="someimg123.png" width="200" height="300"/>
問題は、次のようなデータを受信して画像を返すことができるメソッドがあることです。
public RenderedImage getChartImage (Collection<Integer> data) { ... }
また、動的画像を描画するためのコンポーネントもあります。
<o:dynamicImage width="200" height="300" data="#{bean.readyChartImage}/>
bean
このコンポーネントは必要に応じて html を生成しますが、パラメーターはバイト配列または RenderedImage です。つまり、次のようなメソッドが必要です。
public RenderedImage getReadyChartImage () { ... }
そこで、propertyChangedListener
on submit を使ってCollection<Integer>
グラフを描画するためのデータ( )を設定してから、<o:dynamicImage />
コンポーネントを使うのも一つの方法です。しかし、データを受け取ってグラフを描画する独自のコンポーネントを作成したいと思います。
私は facelets を使用していますが、それほど重要ではありません。目的のコンポーネントを作成する方法はありますか?
私が考えていたPS Oneの解決策は<o:dynamicImage/>
、サーブレットを使用せず、画像をストリーミングすることです。しかし、それを正しく実装する方法、jsfコンポーネントをサーブレットと結び付ける方法、およびすでに構築されたチャート画像を保存する方法(リクエストごとに新しい同じ画像を生成すると、パフォーマンスの問題が発生する可能性があります)などはわかりません..