способ передачи значения переменной java в jstl на странице jsp

Я узнал код для передачи переменной java в jstl следующим образом: -

<%
String str = "abc";
pageContext.setAttribute("str", str);
%>

и чтобы получить это значение в тегах jstl, нам нужно будет использовать такой код: -

<c:out value="${str}"/>

Мой главный вопрос заключается в том, есть ли какой-либо другой способ сделать это для передачи значений из java в jstl?


person Community    schedule 06.05.2013    source источник


Ответы (2)


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

в этом примере вы помещаете его в pageContext

Из нашей EL wiki

${str}

делает в основном то же самое, что и следующее в «сыром» коде скриптлета (приведенный ниже пример предназначен для простоты, на самом деле API отражения используется для получения методов и их вызова):

где PageContext#findAttribute() сканирует атрибуты соответственно PageContext (область страницы), HttpServletRequest (область запроса), HttpSession (область сеанса) и ServletContext (область приложения), пока не будет найдено первое ненулевое значение. Обратите внимание, что таким образом он не печатает «null», когда значение равно null, и не выдает NullPointerException, в отличие от использования скриптлетов. Другими словами, EL null-safe.

person jmj    schedule 06.05.2013
comment
да только на той же странице, поэтому pagecontext. Просто хотите подтвердить, есть ли какая-то альтернатива? - person ; 06.05.2013
comment
Альтернативой является передача его как URL-адрес (например: параметр someurl.com?key=value и доступ к нему как ${param.key}) - person jmj; 06.05.2013
comment
хорошо, большое спасибо, но если есть еще какая-то альтернатива, потому что я не хочу передавать переменную в URL-адрес .. - person ; 06.05.2013

Вы не передаете значения в JSTL, вы устанавливаете атрибуты области видимости. Вы можете установить атрибуты request, session и context или передать request параметры в JSP.

person AllTooSir    schedule 06.05.2013
comment
Да, я устанавливаю атрибуты области действия, но, пожалуйста, помогите мне, если есть другой способ выполнить аналогичную логику. - person ; 06.05.2013
comment
Передайте параметры запроса как , отметил Джигар Джоши в своих комментариях. - person AllTooSir; 06.05.2013