5

サーバー パスを取得してp:graphicImageタグに表示すると、画像が表示されません。画像は webbapp フォルダーの外に読み込まれます。画像のサーバーパスはこんな感じ\\qbsserver\Test Folder\test\car.jpgです。

<p:graphicImage value="\\qbsserver\Test Folder\test\\#{image.imageName}" />

それらを表示するにはどうすればよいですか?Eclipse IDE で PrimeFaces 3.0 と JSF 2.0 を使用しています。

4

1 に答える 1

13

あなたは概念的な間違いを犯しています。何らかの方法で、生成された HTML 出力とともに画像を含めて送信するのはサーバーではありません。HTML 内の タグに<img src>遭遇したときに、 で指定された URL で画像をダウンロードするのは Webブラウザです。<img>

そのため、サーバー固有のローカル ディスク ファイル システム パスではなく、エンドユーザーが Web ブラウザーのアドレス バーに入力する URL とまったく同じ、通常の URL である必要があります。Web ブラウザを使用しているエンドユーザーは、ローカル ディスク ファイル システムの正確なパスにそのイメージを持っていません。

最も簡単なのは、使用しているサーブレットコンテナの「仮想コンテキスト」としてフォルダーを追加することです。どちらを使用しているかは不明です。Tomcat では<Context>server.xml

<Context docBase="/path/to/images" path="/images" />

そしてGlassfishでは、に追加するだけalternatedocrootですglassfish-web.xml

<property name="alternatedocroot_1" value="from=/images/* dir=/path/to" />

詳細については、サーブレットコンテナのドキュメントを参照してください。最終的には、通常の URL でアクセスできるようにする必要があるため、たとえば次のように使用できます。

<p:graphicImage value="/images/#{image.imageName}" />

その他の方法には、PrimeFaces StreamedContentAPIの使用またはサーブレットの自作が含まれます。

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

于 2012-06-01T05:35:10.437 に答える