当我从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标记文件中访问它?
答案 0 :(得分:2)
因为JSP的jsp上下文不同于其中一个标记。您可以将其视为调用另一种方法的方法。如果第二个方法声明了局部变量,则第一个方法将不会看到它。它不在其范围内。
有关如何在JSP标记文件中使用变量的信息,请参阅http://docs.oracle.com/javaee/1.4/tutorial/doc/JSPTags5.html#wp89909。