2011-01-12 24 views
0

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

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

に私にパスを与える知っている

は私がWeb /アプリケーションのルートに取得する方法はありますか?

Primefaces 2.2-RC2
Glassfishの3.0.1
クロサギ科2.0.3 のJava EE 6

はビットの研究の後、私はPrimeFacesはあなたがストリーミングすることを可能に学ぶ EDIT画像の内容はFileInputStreamを使用し、FileInputStreamに絶対パスを使用できます。これは、私がテストして、これがRequestScopedとSessionScoped Beanでのみ機能し、ViewScopedでは動作しないことがわかるまで、良い解決策になります。

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

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

+0

上記のリンクが含まれています私のための解決策。見てみな。 –

答えて

3

だけの画像(例えば)/image/*にマッピングされ、そこから画像を送信される特別なサーブレット、ImageServletInputStreamとしてそれらを取得し、応答OutputStreamにこれを書いて)

+0

サンプルコードを私に教えてください。 –

+0

@ハリー:その複製リンクを確認してください:) – BalusC

+0

@BalusC:今読んでいます。私もあなたにカップルの質問がありますか?ありがとうございました –