私は JSF 2.0 を勉強していImageIcon
て、クラスに参加しています。これImageIcon
を JSF ページに表示できますか?
2 に答える
進行中のいくつかの主要な概念上の誤解があります。
Java/JSF は Web サーバー上で実行され、HTML を生成します。HTML は Web ブラウザー上で実行され<link>
、要素内の (相対) URL によって CSS/JS/画像ファイルを参照できます。Swing の一部であり、このすべてとは何の関係もありません。<script>
<img>
ImageIcon
Swing は HTML をまったく生成しません。JSF バッキング Bean クラスや「プレーン バニラ」サーブレット クラスなど、HTTP リクエストによって呼び出される Java クラスで「Swing 方式」で実行しようとすると、画面にのみ表示されます。これは、Web ブラウザーが実行される物理マシン (まさに HTML が実行される場所) ではなく、Web サーバーが実行される物理マシンに接続されます。
最終的には、通常の HTML 手段でアイコンを表示する必要があります。つまり、要素を使用するか、おそらく CSSプロパティ<img>
を持つブロック要素を使用します。background-image
いずれにしても、画像を返す有効な URL を指定する必要があります (つまり、エンドユーザーがブラウザのアドレスバーにその URL を正確に入力すると、画像全体が表示されるはずです)。通常、これは画像ファイルをパブリック Web コンテンツ (JSF (XHTML/JSP) ページも格納する場所) に配置することによって実現されます。
JSF では、コンポーネントを使用して HTML<img>
要素を生成でき<h:graphicImage>
ます。次の Web コンテンツ フォルダー構造を提供します。
WebContent
|-- META-INF
|-- WEB-INF
|-- resources
| `-- images
| `-- icon.png
`-- index.xhtml
および次のコンポーネントindex.xhtml
<h:graphicImage name="images/icon.png" />
その後、エンドユーザーは を開くだけで目的の画像を表示できるはずindex.xhtml
です。
別の方法として、Swing ベースのアプレットまたはWeb スタート (JNLP)アプリケーションを作成して、イメージを として表示し、最終的に HTMLまたはWeb ページの要素をImageIcon
介して埋め込むこともできます。しかし、それは明らかに不器用です。<applet>
<object>
サーバー側でイメージにレンダリングする以外ImageIcon
に、Web ページにアクセスする唯一の方法はアプレットだと思います。