Я рассмотрел различные вопросы о taglibs и неявных объектах здесь.Хотя многие из ответов представляют интересные идеи, я не смог найти тот, который отвечает на этот вопрос напрямую.
Итак, чтобы проиллюстрировать мою дилемму, скажем, у меня есть класс Java, который реализует javax.servlet.jsp.tagext.Tag interface ...
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;
}
.
.
.
Это дает мне доступ к объекту PageContext, который предоставляет некоторую полезную информацию о вызывающей JSP.Проблема в том, что PageContext, по-видимому, не предоставляет доступ ко многим фактическим неявным объектам JSP ...
.
.
.
public int doEndTag() throws JspException {
ServletRequest req = _pageContext.getRequest();
.
.
.
return EVAL_PAGE;
}
Объект ServletRequest, изображенный выше, довольно сильно отличается от HttpServletRequest, которыйреализуется неявным объектом «запрос» в самой JSP.Это делает вызов таких удобных методов, как HttpServletRequest.getRequestURI () внутри моего класса проблематичным.
Так что, прочитав ответы на несколько других вопросов здесь, у меня сложилось впечатление, что нет-box способ получения фактических неявных объектов.Я должен либо передать их явно как атрибуты пользовательского тега в моем JSP ...
<mc:mytag request="<%=request%>"/>
... или, возможно, сохранить их в хеш-коде какого-то другого неявного объекта, который я do иметь доступ к ...
<% session.setAttribute("request", request); %>
Что, если верно, естественно приводит меня к вопросу ... ты чертовски шутишь ?? Должно быть что-то ключевоечто я здесь скучаю.Доступ к неявным объектам JSP кажется мне довольно распространенным явлением для моих пользовательских классов taglib.Мне кажется невероятно глупым, что мне приходится предпринимать такие шаги каждый раз, когда я их требую, особенно когда мне передают что-то вроде объекта PageContext, который может предоставить их мне, но, похоже, этого не происходит.
Я действительно чувствую, что мне здесь не хватает чего-то простого, но я не могу понять, что это может быть.Может кто-нибудь пролить свет на это?