0

jsf2アプリケーションで PDF ファイルを表示しようとしましたが、パス ファイルに問題があります。

私のpdfファイルは、 resources という名前の別のフォルダー内にある FichesPratiques という名前のフォルダー内にあり (フォルダー resourcesWebContentあります)、これを使用して表示します:

<p:media value="/resources/FichesPratiques/file.pdf" width="100%" height="300px">

しかし、何でも表示されます。

さらに奇妙なことに、以下のリンクを使用してダウンロードすると、機能しません。

<h:outputLink value="/resources/FichesPratiques/file.pdf">click</h:outputLink> to download pdf instead.

誰かが私を助けることができますか?

4

1 に答える 1

1

これらのコンポーネントの HTML 出力で生成された URL を詳しく見てください (右クリックし、Web ブラウザーでソースを表示)。<h:graphicImage value>、 、など<p:media value>とは異なり<h:outputLink value>、URL の前に Web アプリケーション コンテキスト パスを追加しません。URLの先頭/は、要求 URL のドメイン ルート (ブラウザーのアドレス バーに表示されるもの) に相対的になります。

JSF ページが開かれたと想像してください。

http://localhost:8080/somecontext/page.xhtml

次に、これらのvalue="/resources/FichesPratiques/file.pdf"パスは、リソースが存在することを期待します

http://localhost:8080/resources/FichesPratiques/file.pdf

しかし、あなたは実際にそれを持っています

http://localhost:8080/somecontext/resources/FichesPratiques/file.pdf

現在のリクエスト URL に対して有効な URL を使用する必要があります。

<p:media value="resources/FichesPratiques/file.pdf" ... />

または、URL でコンテキスト パスを明示的に指定します。

<p:media value="#{request.contextPath}/resources/FichesPratiques/file.pdf" ... />
于 2013-08-22T16:29:42.150 に答える