1

ローカル ネットワークに画像ファイルがあり、それらを JSF の DataTable に表示したいと考えています。JSF2.0 と Tomahawk 1.1.13 を使用しています。以下はJSFコードです。

    <t:dataTable newspaperColumns="3" value="#{startupBean.colorList}"     newspaperOrientation="horizontal" var="colorBO">

    <f:facet name="spacer">
   <f:verbatim></f:verbatim>
   </f:facet>
   <h:column>
    <h:graphicImage id="colors" alt="jsf-sun" url="#{colorBO.color_url}"> 
    </h:graphicImage>
    </h:column>
    </t:dataTable>

バッキング Bean でファイルのパスを「\\root\sub\sub\xxx.jpg」として指定しています。ただし、JSF ページがレンダリングされると、デフォルトのアイコンが表示されます。アイコンを右クリックしてプロパティを確認すると、以下のようになります。

http://localhost:8080/projname//root/sub/sub/xxx.jpg

パス名にバックスラッシュとスラッシュの両方を使用してみます。ただし、出力に変化はありません。http 部分がどのようにファイル パスに入るかわかりません。確かに何かが足りない。

4

1 に答える 1

2

ここで概念的な間違いを犯しています。要素に遭遇したら、有効で到達可能な URL によって画像を個別にダウンロードする必要がある<img>のは Web ブラウザーです。Web ブラウザーに返される HTML ページ内のローカル ディスク ファイル システムから画像を魔法のように埋め込まなければならないのは Web サーバーではありません。 .

Web ブラウザーがイメージをダウンロードできるように、有効で到達可能な URL でイメージを使用できるようにする必要があります。ローカル ディスクのファイル システム パスは、有効で到達可能な URL ではありません。さらに、サーバー マシンのローカル ディスク ファイル システムの内容が自動的にワールド ワイド ウェブに完全に公開されると、巨大なセキュリティ ホールになります。

この問題を解決する最も簡単な方法の 1 つは、画像を公開 Web コンテンツ (JSF ファイルもある場所) に配置して、Web で利用できるようにすることです。

もう 1 つの方法は、フォルダーを Web に公開するようにサーバーを構成して、特定の URL でも使用できるようにすることです。使用しているサーバーが不明であるため、Tomcat の例を次に示します。

<Context docBase="/root/sub/sub" path="/images" />

このようにして、イメージが利用可能にhttp://localhost:8080/images/xxx.jpgなり、この<h:graphicImage>アプローチが機能するはずです。

<h:graphicImage src="/images/xxx.jpg" />

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

于 2012-08-23T11:45:20.713 に答える