Si c'est un simple fichier, placez juste à webcontent publique (là où vous mettez vos fichiers statiques et JSF) et de créer un lien.
<h:outputLink value="/files/file.ext">link</h:outputLink>
Le servletcontainer s'inquiète de l'application des en-têtes appropriés.
S'il est situé en dehors de la webcontent publique pour des raisons spécifiques (par exemple dans un chemin fixe à la machine serveur ou dans une base de données), puis créer une servlet qui obtient un InputStream
de celui-ci et écrit à la OutputStream
de la réponse au moins les en-têtes Content-Type
, Content-Disposition
et . Vous pouvez trouver here un exemple de coup d'envoi simple. Aussi cela peut simplement être lié sur url-pattern
du servlet.
S'il est à généré dynamiquement et en fonction des paramètres de la requête spécifique JSF, vous pouvez aussi le faire dans une action de haricot géré qui est lié par h:commandLink
ou h:commandButton
, mais vous ne devez vous assurer que vous appelez FacesContext#responseComplete()
à la fin de la méthode d'action de bean pour empêcher JSF de prendre la navigation dans les mains. Le même type de code de servlet peut être réutilisé pour diffuser le fichier. Vous pouvez trouver un exemple de coup d'envoi dans this answer.
Oo Thx BalusC je ne pouvais pas se connecter à tous le week-end, mais je dois vous remercier pour toute votre aide = D J'apprécie vraiment – ErVeY
De rien. – BalusC