Java 为什么我可以从JSP标记文件内部输出属性,而不能从调用标记文件的JSP页面输出属性?

Java 为什么我可以从JSP标记文件内部输出属性,而不能从调用标记文件的JSP页面输出属性?,java,jsp,jsp-tags,tagfile,Java,Jsp,Jsp Tags,Tagfile,当我从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" %> <

当我从
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
变量,但可以从JSP标记文件内部访问它?

因为JSP的JSP上下文与标记的JSP上下文不同。您可以将其视为调用另一个方法的方法。如果第二个方法声明了一个局部变量,第一个方法将看不到它。这不在它的范围之内


有关如何使用JSP标记文件中的变量,请参阅。

谢谢-我误解了标记文件的工作方式-我以为您可以设置一个调用页面可以看到的变量。
<c:out value="${test}"/>