Obtenir l'URL de la requête dans un bean JSF?
Comment obtenez-vous l'URL de la requête dans un haricot à l'appui d'une page JSF? J'ai été à la recherche par le biais de la FacesContext docs et le mieux que j'ai pu trouver semble terriblement long:
public String getRequestURL()
{
Object request = FacesContext.getCurrentInstance().getExternalContext().getRequest();
if(request instanceof HttpServletRequest)
{
return ((HttpServletRequest) request).getRequestURL().toString();
}else
{
return "";
}
}
Edit: Exigences Fonctionnelles L'exigence est ici que nous avons besoin de l'URL complète pour un tiers utilitaire de javascript. L'utilisation ou de l'architecture de l'utilitaire ne rentre pas bien avec JSF, mais tout court de cet appel. La méthode que j'ai trouvé du travail, mais il se sentait mal à creuser si profond dans le FacesContext. De plus, j'espérais qu'il y aurait une façon qui pourrait être appelé avec la JSF Expression de la Langue puisque c'est destiné à être utilisé dans une "vue" de.
Vous devez vous connecter pour publier un commentaire.
Si jamais vous avez besoin de transporter le brut Servlet API sous le JSF hottes par le
FacesContext
, alors les chances sont que vous êtes en train de faire le travail à la mauvaise place. Qu'en est-il de l'exigence fonctionnelle pour laquelle vous avez pensé que c'est la bonne solution? Devriez-vous peut-être ne pas être à l'aide d'un réelServlet
classe ou unFilter
au lieu d'un managed bean JSF? Ou peut-être n'avez-vous pas besoin de l'URL de la requête à tous parce qu'il y a de mieux "jsfish" façons d'atteindre le même?Si vous mettez à jour votre question afin d'inclure les détails à propos de l'exigence fonctionnelle, alors nous pouvons être en mesure de proposer la bonne solution.
Mise à jour selon vos edit: donc, vous avez juste besoin de cela, après tout dans la vue de côté? E. g.
#{bean.requestURL}
? Vous pouvez également les saisir à partir de laHttpServletRequest
objet qui est déjà implicitement disponibles dans EL.Lorsque vous êtes sur la page JSP:
Ou lorsque vous êtes sur Facelets:
Et maintenant, comment en avez-vous besoin pour le JavaScript? L'impression, comme une variable JavaScript? Comme?
Si oui, vous pourriez tout aussi bien saisir
window.emplacement
pour que.Pas besoin d'encombrer le JSF bean avec le point de vue des détails spécifiques.
Vous avez déjà vous répondre 🙂 je crains que vous aurez à l'utiliser de cette façon, car chaque requête HTTP faudra les récupérer à partir de l'visages contexte. Vous pouvez, bien sûr, de simplifier une partie de cette méthode, comme les visages contexte de récupération, mais sa définitivement la voie à suivre, sauf si vous utilisez une sorte de cadre qui fait abstraction de ces détails et de vous laisser à l'Objet HttpRequest directement.
Ce qui concerne.