Jsp 如何从标记文件中的scriplet获取变量

Jsp 如何从标记文件中的scriplet获取变量,jsp,jsp-tags,tagfile,Jsp,Jsp Tags,Tagfile,这些是我在标记文件中的第一步。也许这个问题很简单。但我不能解决它 我有下面的标签文件 <% Foo foo=new Foo(); %> <jsp:include page="${foo.getFileName()}"/> 在我看来,jasper没有看到foo变量。我做错了什么?使用表达式语言${…}您的变量必须可以在页面上下文、请求、会话、应用程序…范围之一中访问 为了使代码正常工作,必须将其更改为: <% Foo foo=new Foo(); pageC

这些是我在标记文件中的第一步。也许这个问题很简单。但我不能解决它

我有下面的标签文件

<% 
Foo foo=new Foo();
%>
<jsp:include page="${foo.getFileName()}"/>


在我看来,jasper没有看到foo变量。我做错了什么?

使用表达式语言
${…}
您的变量必须可以在
页面上下文、请求、会话、应用程序…
范围之一中访问

为了使代码正常工作,必须将其更改为:

<% 
Foo foo=new Foo();
pageContext.setAttribute("foo", foo);
%>
<jsp:include page="${foo.getFileName()}"/>

${some variable name}从范围(例如请求/会话/应用程序)获取变量名

但尚未在任何作用域中设置foo对象

只需尝试一下,
在scriptlet中使用session.setAttribute(“foo”,foo)
pageContext.setAttribute(…)
,然后再试一次


现在,请尝试了解作用域以及哪个作用域更适合您的应用程序。

这里,SCRPlet
foo

使用
操作将at
用作EL

 <jsp:useBean id="foo"  class="packeage.Foo"  scope="page"/>
 <jsp:include page="${foo.fileName}"/>


谢谢您抽出时间。但是当我使用pagecontext时,我得到了以下信息:.org.apache.jasper.jaspereException:PWC6033:JSP PWC6197的Javac编译中的错误:JSP文件中的第11行发生错误:/WEB-INF/tags/insertrea.tag PWC6199:生成的servlet错误:找不到符号:变量pageContextI更新了帖子。查看您的异常,您的代码似乎正在标记文件中运行
 <jsp:useBean id="foo"  class="packeage.Foo"  scope="page"/>
 <jsp:include page="${foo.fileName}"/>