2012-10-03 2 views
8

Ho individuato il file all'interno di WebContent/WEB-INF/resources/file/theFile.pdf, posso sapere come posso scaricare il file che mostrerà una normale finestra di dialogo di download o renderlo nella pagina web (uno dei due farà il modo più semplice di andare) quando l'utente fa clic su il link di una pagina? Sto usando JSF2.0, e attualmente in uso h:outputLink per scaricare il file pdf ma senza fortuna, l'uscita della console mi mostra questo errore:Come creare un file di download in JSF 2.0?

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

Come può dire JSF per rimuovere il /pages e iniziare con il /resources come il mio il file era seduto nella cartella delle risorse.

Questo è il codice per il download:

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

risposta

10

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

Prima di tutto, il contenuto di /WEB-INF (e /META-INF) è non disponibili al pubblico (poiché possono contenere informazioni sensibili come web.xml, tag di file, modelli, ecc.). Metti il ​​file in webcontent pubblico fuori/WEB-INF.

Supponendo che è ora situato nel WebContent/resources/file/theFile.pdf, allora si può collegare ad esso come segue:

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

Estranei al problema concreto, l'utilizzo dell'attributo library su <h:graphicImage> non ha senso. Vedi anche What is the JSF resource library for and how should it be used?

+0

Una risposta molto completa. – huahsin68

+0

Prego. – BalusC

3

Prova con #{request.contextPath} prefisso

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