2012-10-03 4 views
8

私はWebContent/WEB-INF/resources/file/theFile.pdfの中にファイルを配置していますが、ユーザーがクリックすると、通常のダウンロードポップアップダイアログを表示するファイルをダウンロードしたり、Webページでレンダリングする方法(どちらか一方が最も簡単な方法です)ページのリンク?私はJSF2.0を使用して、現在はpdfファイルが、運をダウンロードするh:outputLinkを使用して、コンソール出力は私に、このエラーを表示しています:JSF 2.0でダウンロードファイルを作成するには?

File not found: /pages/resources/file/theFile.pdf 

/pagesを削除し、私のよう/resourcesで開始するJSFを伝えることができますどのようにファイルはリソースフォルダ内にあります。

これはダウンロードコードです:

<h:outputLink value="resources/file/theFile.pdf"> 
    <h:graphicImage library="images" name="pdf.jpg" style="border:none"/> 
</h:outputLink> 

答えて

10

I have file locate inside WebContent/WEB-INF/resources/file/theFile.pdf

まず、/WEB-INF(および/META-INF)の内容を試してみてください(一般に公開ではありませんweb.xml、タグファイル、テンプレートなどの機密情報が含まれている可能性があります)。ファイルを公開ウェブコンテンツの外側に置きます。/WEB-INF。次のように

それが今WebContent/resources/file/theFile.pdfに位置していることと仮定すると、あなたがそれにリンクすることができます

<h:outputLink value="#{request.contextPath}/resources/file/theFile.pdf"> 
    <h:graphicImage library="images" name="pdf.jpg" style="border:none"/> 
</h:outputLink> 

無関係を具体的な問題に、<h:graphicImage>library属性の使用状況は意味をなさない。また、What is the JSF resource library for and how should it be used?

+0

非常に包括的な答えです。 – huahsin68

+0

あなたは大歓迎です。 – BalusC

3

#{request.contextPath}プレフィックスすべての

<h:outputLink value="#{request.contextPath}/resources/file/theFile.pdf"> 
    <h:graphicImage library="images" name="pdf.jpg" style="border:none"/> 
</h:outputLink> 
関連する問題