J'ai examiné différentes questions à propos des taglibs et des objets implicites ici. Bien que de nombreuses réponses présentent des idées intéressantes, je n'ai pas réussi à en trouver une qui répond directement à cette question.Comment accéder aux objets implicites JSP dans les classes Java taglib personnalisées?
Donc, pour illustrer mon dilemme, que j'ai une classe Java qui implémente l'interface javax.servlet.jsp.tagext.Tag ...
import javax.servlet.ServletRequest;
import javax.servlet.jsp.JspException;
import javax.servlet.jsp.PageContext;
import javax.servlet.jsp.tagext.Tag;
class MyTag implements Tag {
private PageContext _pageContext;
public void setPageContext(PageContext pageContext) {
_pageContext = pageContext;
}
.
.
.
Cela me donne accès à un objet PageContext, qui fournit quelques informations utiles sur le JSP appelant. Le problème est, PageContext ne semble pas donner accès à un grand nombre des objets réels implicites JSP de ...
.
.
.
public int doEndTag() throws JspException {
ServletRequest req = _pageContext.getRequest();
.
.
.
return EVAL_PAGE;
}
L'objet ServletRequest décrit ci-dessus est tout à fait différent de HttpServletRequest, qui est mis en œuvre par l'objet implicite " demande "dans le JSP lui-même. Cela rend l'appel de méthodes aussi pratiques que HttpServletRequest.getRequestURI() problématique dans ma classe. Donc, à la lecture des réponses à plusieurs autres questions ici, je suis laissé avec l'impression qu'il n'y a pas de façon originale d'obtenir les objets implicites réels. Je dois soit les transmettre explicitement comme des attributs de la balise personnalisée dans mon JSP ...
<mc:mytag request="<%=request%>"/>
... ou peut-être les stocker dans le hachage d'un autre objet implicite je faire ont accès à .. .
<% session.setAttribute("request", request); %>
qui, si elle est vraie, me conduit naturellement à la question ... êtes-vous friggine plaisantez ?? Il doit y avoir quelque chose qui me manque ici. L'accès aux objets implicites de la JSP semble être une chose assez courante pour moi dans mes classes taglib personnalisées. Cela me paraît extrêmement compliqué de devoir prendre de telles mesures chaque fois que j'en ai besoin - surtout quand on me fait passer quelque chose comme l'objet PageContext qui pourrait bien me les fournir, mais cela ne semble pas le cas. J'ai vraiment l'impression qu'il me manque quelque chose de fondamental ici, mais je ne peux pas, pour la vie de moi, comprendre ce que cela pourrait être. Quelqu'un peut-il nous éclairer à ce sujet?
[* frappe la tête sur le bureau *] Gahh! Je savais qu'il me manquait quelque chose de basique: HttpServerRequest étend ServerRequest. Shoulda l'a vu. Merci pour la réponse, skaffman! – Syndog
Et oui, "objet implicite" n'a de sens que dans le JSP lui-même. Je me demande ce que j'ai dit qui vous a inspiré pour le signaler ...? – Syndog