4

レポート レイアウトでイメージ要素を定義し、type を java.io.Inputstream に設定しようとしましたが、それは機能しません。また、java.awt.Image に設定しようとしましたが、どちらも機能しませんでした。例外は次のとおりです。

java.lang.ClassCastException: oracle.sql.BLOB cannot be cast to java.awt.Image

また

java.lang.ClassCastException: oracle.sql.BLOB cannot be cast to java.io.InputStream

また、グーグルで検索しようとしましたが、結果は私が今していることです。

ご協力いただきありがとうございます。

4

2 に答える 2

3

レポート コード内に画像を埋め込むために blob を呼び出す方法を確認せずに...

  1. を使用しblob.getBinaryStream()ます。
  2. を使用してストリームを変換しますjavax.imageio.ImageIO.read( InputStream )

例えば:

javax.imageio.ImageIO.read( blob.getBinaryStream() )

これは、 のインスタンスを返します。これはBufferedImageをサブクラス化java.awt.Imageしており、レポートに埋め込むのに適したオブジェクトである必要があります。

blob例に示されている変数は、レポートの適切な変数 (目的の列のデータを表す) を使用する必要があります。

以下も参照してください。

于 2012-09-04T22:39:25.720 に答える
0
InputStream is = new ByteArrayInputStream((byte[]) yourBlobData);
myImage = new DefaultStreamedContent(is, "image/png");

jsfページで;

<p:graphicImage value="#{controller.myImage}" style="width:200px;width:500px" />
于 2014-02-19T09:12:06.877 に答える