Пользовательский тег - получить доступ к данным в модели? - PullRequest
1 голос
/ 02 февраля 2010

Я создаю пользовательский тег JSP, расширяя SimpleTagSupport. Обычно в представлении я мог бы сделать что-то вроде <c:out value="${key.attr}" />, используя jstl для извлечения данных из модели. Мой вопрос: при создании пользовательских тегов (с помощью SimpleTagSupport), как получить доступ к данным из модели? Благодаря.

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

Обновление : на основе ответов Божоса кажется, что я могу получить данные из модели, используя контекст JSP. Является ли это типичным способом, которым это обычно делается (то есть, когда пользовательский тег используется для манипулирования частью данных в модели перед отображением)? Или можно передать данные в качестве параметра в пользовательскую логику тега (т. Е. Через атрибуты тега)? Я просто пытаюсь выяснить плюсы и минусы каждого метода. Спасибо.

1 Ответ

1 голос
/ 02 февраля 2010

Все данные, которыми манипулирует JSTL, хранятся в атрибутах контекста jsp. Таким образом, вы можете получить, например, переменную key, вызвав:

getJspContext().getAttribute("key");

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

Конечно, вы можете определить атрибут тега и передать его таким образом.

...