Доступ к неявным объектам из функции JSP EL - PullRequest
4 голосов
/ 23 февраля 2010

При определении функции для языка выражений JSP, есть ли способ указать, что функции требуется один из неявных объектов (например, pageContext)?

Я хочу определить функцию ${my:href('a.jpg')} для реализации

public static String href(String fileName, PageContext pageContext)

но я не хочу явно передавать pageContext функции каждый раз, когда я ее вызываю.

Ответы [ 3 ]

2 голосов
/ 23 февраля 2010

Вы можете получить доступ к «неявным» объектам, только если вы предоставите их для сохранения (через фильтр или что-то еще) в качестве локальных переменных потока. Затем вы можете написать несколько служебных классов, чтобы получить их из любого контекста, который имеет смысл. Некоторые фреймворки (например, Stripes) (ага, Stripes!) Делают это относительно легко.

2 голосов
/ 23 февраля 2010

Рассмотрите возможность использования тега вместо функции. Теги предоставляют вам неявный доступ к PageContext по наследству TagSupport#pageContext.

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

Было бы неплохо, но нет, нет способа сделать это напрямую. Кроме того, нет обходного пути, так как функции JSP EL должны быть public static. Таким образом, решение состоит в том, чтобы вернуться к простому старому JSP-коду:

<% Helper my= new Helper (pageContext); %>

Helper имеет обычный открытый метод, который принимает имя файла в качестве аргумента:

public String href (String fileName) { ... }

и позже

... ${my.href(...)}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...