Почему я могу вывести атрибут из файла тегов JSP, но не из страницы JSP, которая вызывает файл тегов? - PullRequest
1 голос
/ 25 декабря 2011

Когда я вызываю его из main.jsp, test выводится, как и ожидалось:

<%@ tag language="java" pageEncoding="utf-8" isELIgnored="false" %>

<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>
<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %>

<%
 jspContext.setAttribute("test", "test"); 
%>
<c:out value="${test}"/>

Но если я удаляю последнюю строку и вместо этого пытаюсь вывести значение test из main.jsp, это не работает:

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

Почему я не могу получить доступ к переменной test на прилагаемой странице, но она доступна из файла тегов JSP?

1 Ответ

2 голосов
/ 25 декабря 2011

Поскольку контекст jsp JSP отличается от контекста тега. Вы можете увидеть это как метод, вызывающий другой метод. Если второй метод объявляет локальную переменную, первый метод не увидит ее. Это не в его объёме.

См. http://docs.oracle.com/javaee/1.4/tutorial/doc/JSPTags5.html#wp89909 о том, как использовать переменные в файлах тегов JSP.

...