Доступ к объекту запроса из пользовательских тегов JSP - PullRequest
11 голосов
/ 02 июня 2010

Я пытаюсь создать набор пользовательских тегов, которые инкапсулируют элементы формы (разметка и проверка).

Существует метод, позволяющий легко извлекать объект "Out":

JspWriter out = getJspContext().getOut();

Однако я не могу понять, как получить объект запроса. Я хочу иметь возможность прямого доступа к отправленным значениям формы из класса Tag, чтобы я мог проверить каждое поле.

Документация довольно редкая, поэтому я подумал, что, возможно, я мог бы использовать объект JspContext , чтобы каким-то образом получить атрибуты запроса. Но я не понимаю разных областей.

System.out.println(getJspContext().findAttribute("field1"));

всегда печатает "ноль".

Enumeration e = getJspContext().getAttributeNamesInScope(1);

Цикл и распечатка перечисления просто дает мне список классов, которые не существуют:

javax.servlet.jsp.jspOut
javax.servlet.jsp.jspPage
javax.servlet.jsp.jspSession
javax.servlet.jsp.jspApplication
javax.servlet.jsp.jspPageContext
javax.servlet.jsp.jspConfig
javax.servlet.jsp.jspResponse
javax.servlet.jsp.jspRequest

Так это вообще возможно?

Если нет, может ли кто-нибудь указать мне библиотеку тегов, которая занимается отображением и проверкой форм? Я искал в интернете пару часов, и казалось, что все было прекращено, и я не мог их скачать. Либо так, либо предложите лучшую альтернативу для работы с формами.

Редактировать: теги расширяют класс SimpleTagSupport.

1 Ответ

13 голосов
/ 02 июня 2010

Если ваш класс расширяет TagSupport, вы можете получить доступ к защищенной переменной pageContext. Отсюда вы можете получить объект запроса.

http://java.sun.com/webservices/docs/1.5/api/javax/servlet/jsp/tagext/TagSupport.html#pageContext

...