J'écris une balise JSP personnalisée en utilisant les fichiers de balise JSP 2. A l'intérieur de mon tag je voudrais savoir quelle page a appelé la balise afin de construire des URL. Est-ce possible sans le faire passer par un attribut?Est-il possible d'obtenir le nom de la page d'appel dans un tag personnalisé jsp 2.0?
Répondre
Je pense que dans le code de balise, vous pouvez examiner l'objet de requête et son URL, et déterminer la page à partir de cela.
Il s'avère que l'objet de requête est réellement disponible, mais uniquement dans la partie EL d'une variable. Donc, cela fonctionnerait:
<form action="${pageContext.request.requestURI}">
Mais pas:
<form action="<%=request.requestURI%>">
Ou ceci:
<form action="<%=pageContext.request.requestURI%>">
Il est possible d'accéder à la demande à partir du fichier d'étiquette, via l'organe pageContext
variable.
public class YourTag extends TagSupport {
public int doStartTag() throws JspException {
HttpServletRequest req = (HttpServletRequest) pageContext.getRequest();
String pathInfo = req.getPathInfo();
L'objet de requête est disponible dans l'étiquette. Cela n'a pas d'importance si vous utilisez une classe ou un fichier de tags. Dans les fichiers de balises, il est disponible dans les scriptlets Java ainsi que dans EL. Cependant, il est disponible en tant qu'objet ServletRequest et non en tant qu'objet HttpServletRequest (dans EL, la classe de l'objet n'a pas d'importance, mais c'est le cas dans les scriptlets). En outre, dans vos scriptlets, vous devez accéder à la méthode complète, pas seulement à un nom de propriété. Donc, votre code est censé être:
<form action="<%= pageContext.getRequest().getRequestURI() %>">
mais même cela ne fonctionnera pas parce que getRequestURI() est une méthode de HttpServletRequest [1], et non de ServletRequest. Utilisez soit EL, soit utilisez des scriptlets plus longs dans votre fichier de balise et lancez l'objet de requête.
[1] http://java.sun.com/javaee/5/docs/api/javax/servlet/http/HttpServletRequest.html#getRequestURI()
- 1. est-il possible de générer une variable de portée de page dans jsp 2.0 tag disponible à la page parente?
- 2. test de fichiers jsp 2.0 .tag
- 3. tag Mediawiki personnalisé Arrête la page parsing
- 4. Différé EL dans JSP 2.0
- 5. JSP Tag Recursion
- 6. Teleport - tag personnalisé django
- 7. Django, tag personnalisé ... comment?
- 8. En utilisant une balise fmt jsp dans un autre tag
- 9. JSP: tag JSTL <c:out>
- 10. Le contrôle personnalisé recrache son nom dans la source!
- 11. Nom de la page maître dans OnActionExecuting
- 12. Grails - utiliser un taglib JSP personnalisé
- 13. Affichage du temps dans la page JSP
- 14. Obtenir le nom de la page principale dans asp.net MVC
- 15. Obtenir le nom de fichier actuel dans JSP
- 16. code JSP Struts ou tag JSTL
- 17. Comment obtenir le nom d'utilisateur de connexion dans JSp?
- 18. Nom de fichier personnalisé dans un fichier journal Log4Net tournant?
- 19. Pouvez-vous obtenir le nom du fichier jsp en utilisant un taglib dans le code taglib
- 20. JSP Afficher la page de tri Page Recharger
- 21. Réécriture Nom de la page
- 22. Résolution de page JSP/HTML
- 23. Est-il possible, en JSP, d'imprimer la valeur d'une variable dont le nom est dans une autre variable?
- 24. Conversion de valeurs en préfixes d'unités dans la page JSP
- 25. appel code PHP page JSP
- 26. Différence entre le tag personnalisé et Java Bean?
- 27. Comment passer le nom de la méthode au contrôle du serveur personnalisé dans asp.net?
- 28. Nom de la page Google Analytics
- 29. jsp: cela fait référence à quel objet dans le bloc de code jave de la page jsp <% %>?
- 30. Accéder à la variable dans les fichiers jsp tag dans une boucle?
L'objet de requête fonctionnerait si cela était une page JSP régulière, mais dans le fichier d'étiquette l'objet de la demande ne sont pas disponibles. – timdisney