2012-10-03 18 views
8

WebContent/WEB-INF/resources/file/theFile.pdf içinde bir dosya sahibim var, kullanıcı indirme tıklattığında, normal bir yükleme açılır penceresini gösteren veya web sayfasında (ya da en basit yolun olduğu sürece yapacağınız) dosyayı nasıl indirebilirim? bir sayfanın bağlantısı? Ben JSF2.0 kullanarak ve şu anda pdf dosyası ama hiç şans indirmek için h:outputLink kullanıyorum, konsol çıkış bana bu hatayı gösterir:JSF 2.0'de bir indirme dosyası nasıl oluşturulur?

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

/pages kaldırıp olarak /resources başlamak JSF söyleyebilir nasıl benim dosya kaynak klasörü içinde oturdu.

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

cevap

10

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

Öncelikle /WEB-INF (ve /META-INF) içeriği ile deneyin kamuya açık değildir (:

Bu

indirme kodudur web.xml, etiket dosyaları, şablonlar, vb. gibi hassas bilgiler içerebileceğinden. Dosyayı, /WEB-INF'un dışındaki genel webcontent 'a yerleştirin. aşağıdaki gibi

şimdi WebContent/resources/file/theFile.pdf yer alır varsayarsak, o zaman bağlantı verebilirsiniz:

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

İlgisiz beton sorununa, <h:graphicImage> tarihinde library özelliğinin, kullanım anlamsızdır. Ayrıca bkz. What is the JSF resource library for and how should it be used?

+0

Çok kapsamlı bir cevap. – huahsin68

+0

Rica ederim. – BalusC

3

#{request.contextPath} öneki tüm

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