Obtention d'un chemin d'accès à un fichier de ressources à partir de managed-bean dans JSF
J'ai cette situation: je suis en train de supprimer une ancienne image de l'avatar d'un utilisateur avant de mettre un nouveau à partir du managed bean.
String fileName = "resources/img/useravatars/" + getSessionBean().getSearchAccount().getAvatar();
File f = new File(fileName);
J'ai googlé un peu et il semble que je peux obtenir un chemin d'accès à ce dossier à partir ExternalContext comme:
FacesContext facesContext = FacesContext.getCurrentInstance();
facesContext.getExternalContext(). ...
Mais je ne pouvais pas trouver une méthode appropriée à partir de classe docs. Pourriez-vous s'il vous plaît aider avec quoi mettre à la place de ... ou de proposer une meilleure solution.
PS. D'une certaine façon, je suppose qu'il est possible de coder en dur le lien, mais pas de chance jusqu'à présent.
source d'informationauteur Pavlo Bazilnskyy
Vous devez vous connecter pour publier un commentaire.
Je comprends que le fichier est incorporé dans la GUERRE, et que vous êtes à la recherche pour le
ExternalContext#getRealPath()
méthode pour résoudre sur la base d'un web-chemin d'accès relatif. Selon la Javadoc, cette méthode est introduite en JSF 2.0 et n'existe pas dans JSF 1.x. Vous semblez être en utilisant JSF 1.x, sinon vous n'auriez pas posé cette question. Vous avez besoin d'utiliserServletContext#getRealPath()
à la place (c'est aussi ce que le nouveau JSF 2.0 méthode est de déléguer, sous les couvertures).Cependant, il y a un gros MAIS: vous pouvez et ne devrait pas écrire à l'élargissement de la GUERRE. La suppression des fichiers est également à l'écriture. Chaque fois que vous le redéploiement de la GUERRE ou de redémarrer le serveur, tous les changements seront annulées et l'élargissement de la GUERRE conservera son état initial, par la présente, de perdre toutes les modifications apportées à l'élargissement de la GUERRE depuis la dernière déployer.
Vous avez vraiment besoin de stocker ces fichiers dans un emplacement externe, dont la racine emplacement peut alors être codé en dur ou il est défini dans certaines configuration externe (propriétés) d'un fichier. De cette façon, vous pouvez utiliser
java.io.File
choses de la manière habituelle.Il y a plusieurs façons de servir des fichiers à partir d'un emplacement externe. Vous pouvez tous les trouver dans la réponse de la question suivante: Charger des images à partir de l'extérieur de webapps /webcontext /dossier de déploiement à l'aide de <h:graphicImage> ou <img> tag