2012-10-03 7 views
8

Ich habe Datei finden innerhalb WebContent/WEB-INF/resources/file/theFile.pdf, kann ich wissen, wie kann ich die Datei herunterladen, die einen regelmäßigen Download-Popup-Dialog anzeigen oder es auf der Webseite (entweder tun wird so lange wie der einfachste Weg) zu machen, wenn Benutzer klicken auf der Link einer Seite? Ich verwende JSF2.0, und zur Zeit mit h:outputLink die pdf-Datei, aber kein Glück zum Download, zeigen die Konsolenausgabe mir diesen Fehler:Wie erstellt man eine Download-Datei in JSF 2.0?

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

Wie kann JSF erzählen die /pages und beginnen mit dem /resources wie meine entfernen Datei war im Ressourcenordner sitzen.

Dies ist der Download-Code:

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

Antwort

10

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

Vor allem der Gehalt an /WEB-INF (und /META-INF) ist nicht öffentlich zugänglich (da sie möglicherweise vertrauliche Informationen wie web.xml, Tag-Dateien, Vorlagen usw. enthalten. Setzen Sie die Datei in den öffentlichen Webcontent außerhalb/WEB-INF.

Unter der Annahme, dass es jetzt in WebContent/resources/file/theFile.pdf gelegen ist, dann können Sie verknüpfen wie folgt:

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

Unrelated auf die konkrete Problem, um Ihre Nutzung der library Attribut auf <h:graphicImage> macht keinen Sinn. Siehe auch What is the JSF resource library for and how should it be used?

+0

Eine sehr umfassende Antwort. – huahsin68

+0

Gern geschehen. – BalusC

3

Versuchen mit #{request.contextPath} Präfix

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