当我从 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}"/>
但是,如果我删除最后一行并尝试从 main.jsp
打印 test
的值,则它不起作用:
<c:out value="${test}"/>
为什么我无法从封闭页面访问 test
变量,但可以从 JSP 标记文件内部访问它?
最佳答案
因为JSP的jsp上下文和标签的jsp上下文不同。您可以将其视为调用另一个方法的方法。如果第二个方法声明了局部变量,第一个方法将看不到它。这不在它的范围内。
参见http://docs.oracle.com/javaee/1.4/tutorial/doc/JSPTags5.html#wp89909了解如何在 JSP 标记文件中使用 out 变量。
关于java - 为什么我可以从 JSP 标记文件内部输出属性,但不能从调用该标记文件的 JSP 页面输出属性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8631222/