0

JSF が画像を表示するには、システム ルートではなく、Web/アプリケーション サーバー ルートからパスを指定する必要があることを知っています。したがって、絶対パスはありません。しかし、ここに私の問題があります。ユーザーが自分の写真をアップロードして後で表示できるようにするため、画像をどこかに保存する必要があります。ただし、プロジェクト内に画像を保存すると、将来のプロジェクトの再デプロイで画像が消去される可能性があります。その結果、将来の再デプロイの影響を受けないフォルダーにアップロードするのが最善だと思います。しかし、h:graphicImage または p:graphicImage では絶対パスを使用できません。この問題を解決するためのオプションは何ですか?

私はこれが私のプロジェクト戦争への道を与えてくれることを知っています

ServletContext servletContext = (ServletContext) FacesContext.getCurrentInstance().getExternalContext().getContext();  
String path = servletContext.getRealPath("");

Web/アプリケーション ルートにアクセスする方法はありますか?

Primefaces 2.2-RC2
Glassfish 3.0.1
Mojarra 2.0.3 Java EE 6

編集

少し調査した結果、PrimeFaces を使用して画像のコンテンツをストリーミングできることがわかりました。また、絶対パスを使用FileInputStreamすることもできます。FileInputStream私がテストして、これが RequestScoped および SessionScoped Bean でのみ機能し、ViewScoped では機能しないことが判明するまで、これは良い解決策になる可能性があります。

これは、この主要なバグについて開発者に通知するために投稿したリンクです。 http://primefaces.prime.com.tr/forum/viewtopic.php?f=3&t=7052

他のアイデアはありますか?

4

1 に答える 1

3

(たとえば)にImageServletマップされている特別なサーブレットをイメージし、そこからイメージを送信するだけです(イメージを として取得し、これを response に書き込みます)/image/*InputStreamOutputStream

于 2011-01-12T14:52:51.807 に答える