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

时间:2011-12-25 19:42:40

标签: 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" %>
<%@ 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 个答案:

答案 0 :(得分:2)

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

有关如何在JSP标记文件中使用变量的信息,请参阅http://docs.oracle.com/javaee/1.4/tutorial/doc/JSPTags5.html#wp89909